Почему этот код не принимает стандартный ввод и выводит fot tc = 1?

Написал следующий код, чтобы получить ввод и отобразить этот вывод, но он не работает, когда я задаю tc 1.

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
main()
{
int tc,n;
char ch[1000];
cin >>tc;
while(tc--){

gets(ch);
puts(ch);
}}

-3

Решение

Проблема в том, что в потоке осталась новая строка, которая не используется std::cin, Это потребляется gets но отбрасывается. Это просто исправить, включить <limits> и положить это после cin:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Неразумно смешивать код на C и C ++. Вы уже используете std::cin, придерживайтесь его и рассмотрите возможность использования std::getline, Имейте в виду, что вы столкнетесь с той же проблемой, если попытаетесь смешать std::cin а также std::getline, Рекомендуется придерживаться одного или другого.

Заметка: gets устарела. Это удалено в C11 и C ++ 14. использование fgets вместо.

1

Другие решения


По вопросам рекламы [email protected]