我已经在不同的方法上进行了尝试,但是问题仍然存在,有时循环会按需执行,有时则无法执行。
#include <string.h>
#include <stdio.h>
void main()
{
int n;
scanf("%d", &n);
char s[50];
for(int i = 0; i < n; i++)
{
gets(s);
puts(s);
}
}
该循环应该已经运行了n次,但仍进行了n-1次。
答案 0 :(得分:0)
gets()
读取一行,直到找到换行符。由于scanf("%d",&n)
函数调用旁边的gets()
输入中有换行符,它将读取此新行并返回而无需进一步阅读。要解决此问题,您可以在getchar();
之后使用scanf("%d",&n);
,请参见下面的更改:
#include<string.h>
#include<stdio.h>
void main()
{
int n;
scanf("%d",&n);
getchar();
char s[50];
for(int i=0;i<n;i+=1)
{
gets(s);
puts(s);
}
}