此程序不扫描第一次循环迭代的字符串。基本上是第一次迭代'不工作.....为什么?
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");
}
}
答案 0 :(得分:1)
scanf
不会使用换行符。因此,在第一次迭代中,fgets
看到的第一个字符是换行符,并立即退出。您也可能已经注意到所有元素都被一个元素关闭(即您输入的第一个字符串位于a[0]
,第三个位于a[1]
等)。
您需要在getchar
之后立即拨打scanf
来拨打换行符。