У меня есть почти хорошая рабочая программа для подсчета слов со стандартного ввода. Слово, которое нужно считать, является аргументом программы.Программа подсчета слов c
Проблема в том, что я использую пробел, чтобы видеть слово, но я также должен учитывать внутри самого слова. Пример: если мой вход аа аааа #EOF, и я хочу, чтобы подсчитать аа результат должен быть 4. Мой код результата 2.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int word_cnt(const char *s, char *argv[])
{
int cnt = 0;
while(*s != '\0')
{
while(isspace(*s))
++s;
if(*s != '\0')
{
if(strncmp(s, argv[1], strlen(argv[1])) == 0)
++cnt;
while(!isspace(*s) && *s != '\0')
++s;
}
}
return cnt;
}
int main(int argc, char *argv[])
{
char buf[1026] = {'\0'};
char *p="#EOF\n";
int tellen = 0;
if (argc != 2)
{
printf("Kan het programma niet uitvoeren, er is geen programma argument gevonden\n");
exit(0);
}
while((strcmp(buf, p) !=0))
{
fgets (buf, 1025, stdin);
tellen += word_cnt(buf, argv);
}
printf("%d", tellen);
return 0;
}
Какой? У вас есть два слова: 'aa' и' aaaa' –
', если мой вход aa aaaa #EOF, и я хочу считать aa, результат должен быть 4' Зачем должен быть ваш результат 4? – Falmarri
из-за слова aaaa на самом деле имеет 3 раза aa, первый - ** aa ** aa, второй a ** aa ** a, а третий, aa ** aa **. – user1933355