Посчитать количество слов в строке и определить длину каждого слова - C (СИ)
Формулировка задачи:
Здравствуйте)))
Помогите доделать задачку, она у меня худо-бедно считает кол-во слов во всей строке, но ещё нужно определить сколько слов длиной меньше 4 символов.
Вот код:
То есть CountWord считает сколько всего в строке слов, а вот m должна посчитать сколько слов длиной меньше 4 символов.
Как сделать, чтобы считало только те слова, которые длиной меньше 4 символов?
Мне выводится еще предупреждение на вот эту строку:
#include <stdio.h>
#include <string.h>
void main()
{
int i=1, m=0;
char *s="I can use the online Help system from the Help menu.";
int CountWord=1;
for (i=1; i < strlen(s); i++)
{
if (s[i-1]==' ' && s[i]!=' ')
CountWord++;
if (strlen(s[i])<4)
m++;
}
printf("Kol-vo slov = %d\n %d", CountWord, m);
}if (strlen(s[i])<4)
Решение задачи: «Посчитать количество слов в строке и определить длину каждого слова»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
char str[1024];
void main()
{
// printf("Enter input string\r\n");
// scanf("%s",&str);
strcpy(str,"I can use the online Help system from the Help menu.");
printf("Enter number char in words with length less then num :\r\n");
int nWord = 0, sLen = strlen(str), m = 0, n = 0;
int nChr = -1; scanf("%d",&nChr);
char * chBuf = strrchr(str,' ');
while(chBuf)
{
n = strlen(chBuf);
if(n - 1 < nChr)
m++;
str[sLen - n] = '\0';
chBuf = strrchr(str,' ');
sLen = strlen(str);
nWord++;
}
printf("Total WordCount = %d\n",nWord);
printf("Number words with length less then %d is : %d\r\n", nChr, m);
printf("Press any key to exit from program...");
getchar();getchar();//Ну а это чтоб консоль сразу не сбрасывалась,
}
Объяснение кода листинга программы
В этом коде осуществляется подсчет количества слов в строке и определение длины каждого слова.
- Ввод данных:
- Строка вводится через командную строку.
- Переменная
strобъявлена как массив символов на 1024 элемента. - Вместо ввода строки с клавиатуры используется функция
strcpy(), которая копирует строкуI can use the online Help system from the Help menu.в переменнуюstr. - Переменные
nWord,sLenиmинициализируются нулевыми значениями. - Переменная
nChrинициализируется значением, которое считывается с помощью функцииscanf(). - Переменная
chBufинициализируется значением, равным последнему символу строкиstr.
- Обработка данных:
- Используется цикл
while, который выполняется до тех пор, покаchBufне станет равнымNULL. - Внутри цикла выполняются следующие действия:
- Переменная
nинициализируется значениемstrlen(chBuf). - Если длина текущего слова меньше
nChr, то переменнаяmувеличивается на единицу. - Последний символ текущего слова заменяется на символ
NULL. - Переменная
sLenобновляется на длину строки без текущего слова. - Переменная
nWordувеличивается на единицу.
- Переменная
- Используется цикл
- Вывод данных:
- Выводится общее количество слов в строке с помощью
printf(Total WordCount = %d\n,nWord). - Выводится количество слов с длиной меньше
nChrс помощьюprintf(Number words with length less then %d is : %d\r\n, nChr, m). - Выводится сообщение
Press any key to exit from program...с помощьюprintf(Press any key to exit from program...);. - Для предотвращения сброса консоли после выхода из программы используется функция
getchar();getchar();.
- Выводится общее количество слов в строке с помощью