C语言输入字符串到结构体数组中

每输入一个字符串存在结构体数组中,空格后再一个名字,存入结构体数组,知道回车键结束输入

运行结果:

img

代码:

#include <stdio.h>

typedef struct _stnode 
{
    char id[20]; //学号 字符串
    char name[20];//名字 字符串
}MyData;

int main()
{
    MyData data[20]; //结构体数组
    int n =0,i;
    char ch=0;
    while(1)
    {
        if( scanf("%s %s",data[n].id,data[n].name))
            n++;
        ch = getchar();
        if(ch == '\n')
            break; //输入回车结束
    }

    //输出
    printf("输出:\n");
    for(i=0;i<n;i++)
    {
        printf("%s %s\n",data[i].id,data[i].name);
    }

    return 0;

}

空格后再一个名字??啥意思?每个字符串都是名字吗?名字中有没有空格呢?
直接用scanf("%s"就可以了

char s[100][100];
int n=0;
while(scanf("%s",s[n]) != EOF)
{
      n++;
}

#include <stdio.h>

struct S
{
    char str[100];
};

int main()
{
    S s;
    gets_s(s.str, 100);
    printf("%s\n", s.str);
    return 0;
}

ctrl z结束输入

#include <stdio.h>
struct
{
    char str[255];
}
name[255];
int main()
{
    int n=0;
    while(scanf("%s",name[n].str)==1) n++;
    for(int i=0;i<n;i++)
    {
        printf("%s\n",name[i].str);
    }
    return 0;
}