我已经尝试过不同的ides,但问题仍然存在,有时循环按需执行,有时不执行。
#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次。
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);
}
}