Цикл не выполняется столько раз, сколько указано - PullRequest
0 голосов
/ 16 февраля 2019

Я пробовал это на разных 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 раз.

1 Ответ

0 голосов
/ 16 февраля 2019

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);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...