话不多说,先来一个没有问题的代码:
#include <stdio.h>
int main()
{
char num[12],name[10],sex,id[100],salary[100],address[100];
//
gets(num);
gets(name);
printf("职工号:%s 名字:%s ",num,name);
//
gets(id);
gets(salary);
gets(address);
printf("身份证号:%s 工资:%s 地址:%s ",id,salary,address);
//
sex=getchar();
if (sex == 'm' ||sex == 'M')
printf("性别:男 ");
else if (sex == 'w' ||sex == 'W')
printf("性别:女 ");
return 0;
}
以上是没有问题的代码,是可以运行的。哎呀我很调皮,如果我把 sex=getchar(); 这一行代码放在gets(address)之前的话,会有什么的情况发生?
#include <stdio.h>
int main()
{
char num[12],name[10],sex,id[100],salary[100],address[100];
//
gets(num);
gets(name);
printf("职工号:%s 名字:%s ",num,name);
//
gets(id);
gets(salary);
sex=getchar();
gets(address);
printf("身份证号:%s 工资:%s 地址:%s ",id,salary,address);
//
// sex=getchar();
if (sex == 'm' ||sex == 'M')
printf("性别:男 ");
else if (sex == 'w' ||sex == 'W')
printf("性别:女 ");
return 0;
}
什么情况?地址中的第一个字母去哪里了?性别去哪里了?!!
别急,因为我们把sex=getchar(); 这一行代码放在gets(address)之前了,所以地址中的第一个字符被性别用去了,但又由于性别的字符识别是wWmM,而被用去的字符是b,识别不了,所以性别的信息才输不出来。
那我们要怎么做呢?来,我们一起来看
这样,只要我们在地址的输入字符串中第一个输入性别能够识别的字符,这样的话,性别还有地址的信息也就对了。
如果你把性别放在其他的位置,相应的也要在什么的前面,加多一个性别能够识别的字符就可以了,解决方法是一样的。
哈哈哈,加油。