Я написал блок кода для подсчета количества слов, из которых состоит строка.
Я уже пробовал несколько входов, и большинство из них получаются правильными, но есть случаи, указывающие, что моя программа имеет фундаментальный logi c недостаток. Например, если я установлю пустую строку, результат будет ошибочно равен 1, и если я добавлю пробел прямо в конец строки, по какой-то причине я не знаю, что результат будет равен 1 + фактическое количество слов в строка и, как показывает мой код, я хотел бы убрать все пробелы / табуляции.
Моя программа в основном делает это среди строки, но, к сожалению, не в конце. Мне совершенно ясно, что с моей функцией что-то не так, но я не могу понять, что именно. И я знаю, что, вероятно, это будет легче реализовать с помощью внешних библиотек, но меня просят реализовать его с помощью чистого базового c кода.
Это то, что у меня есть:
int get_number_of_words(char input_string[])
{
int i, j, counter = 0;
for (i = 0; i < STRING_SIZE; i++)
{
if (input_string[i] != ' ')
{
counter++;
j = i;
while ((input_string[j] != ' '))
j++;
i = j;
}
}
return counter;
}
Я приведу несколько примеров строк ввода и вывода:
"Hello\t\t\t"
- 1 слово (вкладки игнорируются) "Hello"
- 1 слово ""
- 0 слов "\t\tThis is a basic example\t\t\t"
- 5 слов (вкладки игнорируются) "This is a basic example "
- также 5 слов (последний пробел игнорируется)
Позже мне придется принимать во внимание различные знаки препинания (которые включены в слова), но в то же время все, что я хочу, это gr asp ядро программы.