Привет, ребята У меня есть следующий код, я не понимаю, почему в функции «strcount» последняя строка не отображает всю строку еще раз? Спасибо заранее!После подсчета символов счетчик застрял?
#include <iostream>
const int ArSize = 10;
void strcount(const char * str);
int main()
{
using namespace std;
char input[ArSize];
char next;
cout << "Enter a line:\n";
cin.get(input, ArSize);
while(cin)
{
cin.get(next);
while(next != '\n')
cin.get(next);
strcount(input);
cout << "Enter next line (empty line to quit):\n";
cin.get(input, ArSize);
}
void strcount(const char * str)
{
using namespace std;
static int total = 0;
int count = 0;
cout << "\"" << str <<"\" contains ";
while(*str++)
count++;
total += count;
cout << count << " characters\n";
cout << total << " characters total\n" << endl;
cout << str << endl;
}
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Почему вы ожидаете 'cout << str' для печати исходной строки? Вы понимаете, что вы изменяете указатель 'str' в цикле' while', правильно? –
Я рекомендую использовать 'std :: string' и' std :: getline' для чтения текста от пользователя. Гораздо проще, чем беспокоиться о переполнении массива или отсутствии нулевого символа завершения. –