大学生编码的疑问,好伤心

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include
#include
typedef int DataType;
#define MAXNUM 100
typedef struct {
    DataType data[MAXNUM];  // 数组方法,静态内存分配
    int length;
}SeqList;
int CreateSeqList(SeqList* sl)
{
    int guo = 0,a = 0;
    for (; a < 20; a++)
    {
        scanf("%d\n",&guo);
        if (guo >= 0 && guo <= 9)
            s1->data[a] = guo;
        else break;
    }
    if (a > 0)
    {
        s1->length = a;
        return 1;
    }
    else return 0;
}
void PrintSeqList(SeqList* sl)
{
    for (int i = 0; i < s1->length; i++)
        printf("%d ",s1->data[i]);
}
int InsertSeqList(SeqList* sl,int i, DataType x)
{
    if (s1->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else if (i > s1->length + 1 || i < 1)
    {
        printf("插入位置错误,插入失败\n");
        return 0;
    }
    else
    {
        for (int j = s1->length; j >= i; j--)
            s1->data[j] = s1->data[j - 1];
        s1->data[i - 1] = x;
        s1->length++;
        return 1;
    }
}
int DelSeqList(SeqList* sl,int i, DataType* rtn)
{
    if (s1->length == 0)
    {
        printf("下溢错误,删除失败\n");
        return 0;
    }
    else if(i > s1->length || i < 1)
    {
        printf("删除位置错误,删除失败\n");
        return 0;
    }
    else
    {
        *rtn = s1->data[i - 1];
        for (int j = i; j < s1->length; j++)
        s1->data[j - 1] = s1->data[j];
        s1->length--;
        return 1;
    }
}
int InsertSeqListSorted(SeqList* sl, DataType x)
{
    if (s1->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else
    {
        int i = 0;
        for (; i < s1->length; i++)
        {
            if (x >= s1->data[i])
                coutinue;
            else if (x < s1->data[i])
                break;
        }
        i = i + 1;//插入的位置
        for (int j = s1->length; j >= i; j--)
            s1->data[j] = s1->data[j - 1];
        s1->data[i - 1] = x;
        s1->length++;
        return 1;
    }
}
int main()
{
    SeqList list;
    list.data[] = 0;
    list.length = 0;
    CreateSeqList(list);
    PrintSeqList(list);


    return 0;
}

为什么会报错啊,还没调用其他函数
.cpp(92,30): error C2232: “->list_type::data”: 左操作数有“struct”类型,使用“.”
: warning C4473: “printf”: 没有为格式字符串传递足够的参数
: message : 占位符和其参数预计 1 可变参数,但提供的却是 0 参数
message : 缺失的可变参数 1 为格式字符串“%d”所需
1>已完成生成项目“实验一.vcxproj”的操作 - 失败。


#include<stdio.h>
#include<stdlib.h>
#include <string.h>
typedef int DataType;
#define MAXNUM 100
typedef struct {
    DataType data[MAXNUM];  // 数组方法,静态内存分配
    int length;
}SeqList;
int CreateSeqList(SeqList* sl)
{
    int guo = 0,a = 0;
    for (; a < 20; a++)
    {
        scanf("%d\n",&guo);
        if (guo >= 0 && guo <= 9)
            sl->data[a] = guo;
        else break;
    }
    if (a > 0)
    {
        sl->length = a;
        return 1;
    }
    else return 0;
}
void PrintSeqList(SeqList* sl)
{
    for (int i = 0; i < sl->length; i++)
        printf("%d ",sl->data[i]);
}
int InsertSeqList(SeqList* sl,int i, DataType x)
{
    if (sl->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else if (i > sl->length + 1 || i < 1)
    {
        printf("插入位置错误,插入失败\n");
        return 0;
    }
    else
    {
        for (int j = sl->length; j >= i; j--)
            sl->data[j] = sl->data[j - 1];
        sl->data[i - 1] = x;
        sl->length++;
        return 1;
    }
}
int DelSeqList(SeqList* sl,int i, DataType* rtn)
{
    if (sl->length == 0)
    {
        printf("下溢错误,删除失败\n");
        return 0;
    }
    else if(i > sl->length || i < 1)
    {
        printf("删除位置错误,删除失败\n");
        return 0;
    }
    else
    {
        *rtn = sl->data[i - 1];
        for (int j = i; j < sl->length; j++)
        sl->data[j - 1] = sl->data[j];
        sl->length--;
        return 1;
    }
}
int InsertSeqListSorted(SeqList* sl, DataType x)
{
    if (sl->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else
    {
        int i = 0;
        for (; i < sl->length; i++)
        {
            if (x >= sl->data[i])
                continue;
            else if (x < sl->data[i])
                break;
        }
        i = i + 1;//插入的位置
        for (int j = sl->length; j >= i; j--)
            sl->data[j] = sl->data[j - 1];
        sl->data[i - 1] = x;
        sl->length++;
        return 1;
    }
}
int main()
{
    SeqList list;
    memset(list.data, 0, MAXNUM);
    list.length = 0;
    CreateSeqList(&list);
    PrintSeqList(&list);
    return 0;
}

(1)拼写错误 sl改成s1 。continue拼错了
(2)数组初始化用memset,不是直接data[]=0
(3)传递指针参数,因为函数参数是SeqList* s1,这是一个指针,所以调用的时候使用&符号
(4)输入的时候有些问题,如果是输入一个数换行一次的话倒没问题,但是如果是一行输入很多的话scanf里面的\n就不要了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int DataType;
#define MAXNUM 100
typedef struct {
    DataType data[MAXNUM];  // 数组方法,静态内存分配
    int length;
}SeqList;
int CreateSeqList(SeqList* s1)
{
    int guo = 0,a = 0;
    for (; a < 20; a++)
    {
        scanf("%d",&guo);
        if (guo >= 0 && guo <= 9)
            s1->data[a] = guo;
        else 
            break;
    }
    if (a > 0)
    {
        s1->length = a;
        return 1;
    }
    else return 0;
}
void PrintSeqList(SeqList* s1)
{
    for (int i = 0; i < s1->length; i++)
        printf("%d ",s1->data[i]);
}
int InsertSeqList(SeqList* s1,int i, DataType x)
{
    if (s1->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else if (i > s1->length + 1 || i < 1)
    {
        printf("插入位置错误,插入失败\n");
        return 0;
    }
    else
    {
        for (int j = s1->length; j >= i; j--)
            s1->data[j] = s1->data[j - 1];
        s1->data[i - 1] = x;
        s1->length++;
        return 1;
    }
}
int DelSeqList(SeqList* s1,int i, DataType* rtn)
{
    if (s1->length == 0)
    {
        printf("下溢错误,删除失败\n");
        return 0;
    }
    else if(i > s1->length || i < 1)
    {
        printf("删除位置错误,删除失败\n");
        return 0;
    }
    else
    {
        *rtn = s1->data[i - 1];
        for (int j = i; j < s1->length; j++)
        s1->data[j - 1] = s1->data[j];
        s1->length--;
        return 1;
    }
}
int InsertSeqListSorted(SeqList* s1, DataType x)
{
    if (s1->length >= MAXNUM)
    {
        printf("上溢错误,插入失败\n");
        return 0;
    }
    else
    {
        int i = 0;
        for (; i < s1->length; i++)
        {
            if (x >= s1->data[i])
                continue;
            else if (x < s1->data[i])
                break;
        }
        i = i + 1;//插入的位置
        for (int j = s1->length; j >= i; j--)
            s1->data[j] = s1->data[j - 1];
        s1->data[i - 1] = x;
        s1->length++;
        return 1;
    }
}
int main()
{
    SeqList list;
    memset(list.data,0,sizeof(list.data));
    list.length = 0;
    CreateSeqList(&list);
    PrintSeqList(&list);
    return 0;
}