此程序在c程序中没有扫描第一次循环迭代的字符串

此程序在c程序中没有扫描第一次循环迭代的字符串,c,scanf,C,Scanf,此程序在第一次循环迭代中没有扫描字符串。基本上,“for”的第一次迭代不起作用……为什么 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],s

此程序在第一次循环迭代中没有扫描字符串。基本上,“for”的第一次迭代不起作用……为什么

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");
          }
}
void main()
{
int T;
printf(“输入T:”);
scanf(“%d”、&T);
字符a[T][100];
int i;

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


您需要在
scanf
之后插入一个对
getchar
的调用,以摆脱换行符。

确保您理解
scanf
fgets
所做的事情。在深入研究类似的复杂问题之前,先编写一个简单的程序,让自己相信您的理解。
scanf()
通常不适合获取原始用户输入。请在代码中放入一些
printf
s,然后找出发生了什么情况…或者更好的方法是使用调试器!仍然存在一些问题…!输入的第一个字符在某个地方被使用