for循环不执行指定的次数

问题描述 投票:0回答:1

我已经尝试过不同的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次。

c
1个回答
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);
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.