结构阵列;输入多个字符串
所以我想建立一个简单的程序来输入使用结构的数据。结构阵列;输入多个字符串
我原来的计划是这样的:
#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