For循环未执行指定的次数

时间:2019-02-16 06:52:42

标签: c

我已经在不同的方法上进行了尝试,但是问题仍然存在,有时循环会按需执行,有时则无法执行。

#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次。

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);
        }
}