该程序不扫描c程序中第一次循环迭代的字符串

时间:2014-08-13 21:04:15

标签: c scanf

此程序不扫描第一次循环迭代的字符串。基本上是第一次迭代'不工作.....为什么?

void main()
{
          int T;

          printf("Enter T:");
          scanf("%d",&T);

          char a[T][100];
          int i;
          for(i=0;i<T;i++)
          {
               fgets(a[i],sizeof(a[i]),stdin);
               printf("\n%s",a[i]);

          printf("hii");
          }
}

1 个答案:

答案 0 :(得分:1)

scanf不会使用换行符。因此,在第一次迭代中,fgets看到的第一个字符是换行符,并立即退出。您也可能已经注意到所有元素都被一个元素关闭(即您输入的第一个字符串位于a[0],第三个位于a[1]等)。

您需要在getchar之后立即拨打scanf来拨打换行符。