Написал следующий код, чтобы получить ввод и отобразить этот вывод, но он не работает, когда я задаю 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);
}}
Проблема в том, что в потоке осталась новая строка, которая не используется 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
вместо.