在编写c程序时,我编写了以下代码,这样我就可以为每个字符串添加多个单词 '
#include<stdio.h>
struct address
{
char house[20],street[20],city[10];
};
struct student
{
struct address A;
};
struct student getdata();
struct student getdata()
{
struct student s;
printf("\n\nEnter the Data\n\n");
printf("House : ");
if(fgets(s.A.house,20,stdin));
printf("Street : ");
if(fgets(s.A.street,20,stdin));
printf("City : ");
if(fgets(s.A.city,10,stdin));
return s;
}
int main()
{
struct student s;
int i;
printf("\nEnter the number\n");
scanf("%d",&i);
s=getdata();
}
但在终端我得到了
House : Street :
即我无法为House提供数据,而是直接将我带到Street。
答案 0 :(得分:0)
调用scanf
后,输入缓冲区中还有一个换行符。稍后调用fgets
时,它将读取缓冲的换行符并立即返回。
要在scanf
之后清除输入缓冲区,请调用getchar
读取字符,直至读取换行符。
scanf("%d",&i);
while (getchar() != '\n');
s=getdata();