C/C++

Навыков программного обработки строк типа char *

Определить количество лишних пробелов в строке (двойных и начальных) без использование string
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
int spaces(const char* s) {
int count = 0;
int i = 0;
int j = strlen(s) - 1;
while (s[i] > 0 && isspace(s[i])) {
++count;
++i;
}
while (s[j] > 0 && isspace(s[j])) {
++count;
--j;
}
int n = 0;
while (++i < j) {
if (s[i] > 0 && isspace(s[i])) {
++n;
if (n > 1) ++count;
} else {
n = 0;
}
}
return count;
}
int main() {
const char* str = " 12 34 56 "; // 7
int n = spaces(str);
cout << "spaces: " << n << '\n';
system("pause > nul");
}
Александр
Александр
52 164
Лучший ответ
Лишние пробелы это
1 Пробел в начале строки перед символом
2 Пробел в конце строки после символа перед концом строки
3 Пробел перед знаками препинания точка, тире, двоеточие, точка с запятой
4 Два и более пробелов между символами.
где Символ это буква, цифра или печатный знак но не пробел.

Дерзай. Думай как их найти в строке.
Наверное надо начать с п. 4, найти в строке подряд два пробела
Сохранить строку в буфер
Обойти строку и выяснить нет ли п. п 1-3.
Анатолий Ильин Как раз перед тире пробел нужен.
Евгений Успенский а сразу нельзя посчитать?
char * это не строка, а указатель на байт или на массив байтов.
Для работы со строками необходимо применять специальные классы.