c中字符串中的多个单词输入

时间:2017-08-18 12:42:03

标签: c string

在编写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。

1 个答案:

答案 0 :(得分:0)

调用scanf后,输入缓冲区中还有一个换行符。稍后调用fgets时,它将读取缓冲的换行符并立即返回。

要在scanf之后清除输入缓冲区,请调用getchar读取字符,直至读取换行符。

scanf("%d",&i);
while (getchar() != '\n');
s=getdata();