两个一样的作者: baicaidaoshi 时间: 2015-11-18 18:05 回复 16# zsszss0000
#include <stdio.h>
#define p printf
#define s scanf
struct student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
}
main()
{
struct student str[3];
int i = 0;
for(i=0;i<3;i++)
{
p ("Num:");
s ("%d",&str.num);
p ("Name:");
s ("%s",str.name);
p ("Sex:");
s ("%c",&str.sex);
p ("Age:");
s ("%d",&str.age);
p ("Addr:");
s ("%s",&str.addr);
}
int j=0;
for (j=0;j<3;j++)
{
printf ("num:%d\nname:%s\nsex:%c\nage:%d\naddr:%s\n",str[j].num,str[j].name,str[j].sex,str[j].age,str[j].addr);
}
}
这个就是问题代码,在输入完name后,
就成了Sex:Age:连在一起,没办法输入性别!
作者: woshipanlaoda 时间: 2015-11-23 23:26
sex已经获取到了值,就是上边name字符串后面你输入的换行符。
代码应该这样:
p ("Name:");
s ("%s",str.name);
fflush(stdin); //清空一下输入缓冲区
p ("Sex:");
s ("%c",&str.sex);作者: ZaCkMeGaMiNd 时间: 2015-11-24 08:54
话说,编译的时候没有警告吗?