结构阵列;输入多个字符串

所以我想建立一个简单的程序来输入使用结构的数据。结构阵列;输入多个字符串

我原来的计划是这样的:

#include <stdio.h> 

#include <stdlib.h>

struct student {

int num;

char name[20];

};

int main()

{

int size, i;

scanf("%d", &size);

struct student s[size];

for(i=0; i < size; i++){

scanf("%d", &s[i].num);

scanf("%s", &s[i].name);

}

for(i=0; i < size; i++){

printf("no.:%d\n", s[i].num);

printf("name:%s\n", s[i].name);

}

return 0;

}

我的测试输入是:

2 

1 Name1

2 Name2

这是工作,但只有当输入正确的数据。 但是当我尝试在我的结构中使用更多的字符串时,它开始变得混乱。例如这样的事情是行不通的:

#include <stdio.h> 

#include <stdlib.h>

struct student {

int num;

char name[20];

char gender;

char address[20];

};

int main()

{

int size, i, j;

scanf("%d", &size);

struct student s[size];

for(i=0; i < size; i++){

scanf("%d", &s[i].num);

scanf("%s", s[i].name);

scanf("%s", s[i].gender);

scanf("%s", s[i].address);

}

for(i=0; i < size; i++){

printf("no.:%d\n", s[i].num);

printf("name:%s\n", s[i].name);

printf("gender:%s\n", s[i].gender);

printf("address:%s\n", s[i].address);

}

return 0;

}

我明白,所以我试图用的getchar这个问题必须躺在scanf函数的使用字符串输入()。我认为这样的事情可能会奏效。

for(i=0; i < size; i++){ 

int j=0;

while((s[i].name[j]=getchar()) != ' ');

j++;

s[i].name[j] = '\0';

}

虽然它不工作。在这一点上,我感到困惑,我不确定有什么问题。我的意思是我想输入的东西,如:使用结构

1001杰夫中号No.2_road_city

,但我感到困惑应该如何准确完成。

回答:

fflush(stdin); 使用的scanf(“%S” .... 它清除键盘缓冲区之前。两个连续的scanf语句,而不刷新缓冲区使第二成包含来自第一输入一个新行/回车只有

另一个问题:。你用scanf("%s"一个字符变量(CHAR性别)更改为scanf("%c",&s[i].gender);

以上是 结构阵列;输入多个字符串 的全部内容, 来源链接: utcz.com/qa/259921.html

回到顶部