Есть строка (вводится с клавиатуры или просто задана сразу, не важно). Нужно посчитать сколько раз каждое слово встречается в этой строке.
Не могу понять как правильно вывести на экран слова. Например строка "123 321 123 123321".
Нужно вывести так:
123: 2
321: 1
123321: 1
У меня выводи так:
123: 2
321: 1
123: 1
123321: 1
Вот код на си:
Заранее спасибо.
Не могу понять как правильно вывести на экран слова. Например строка "123 321 123 123321".
Нужно вывести так:
123: 2
321: 1
123321: 1
У меня выводи так:
123: 2
321: 1
123: 1
123321: 1
Вот код на си:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int word_len, i = 0, j, k = 0;
char *main_str = "123 321 123 456 123321 123", *sub_str = " ", word[80], **mas_str;
mas_str = (char **) calloc(strlen(main_str)/2, sizeof(char *));
while (strlen(main_str))
{
k++;
char *ptr = strstr(main_str, sub_str);
if (ptr == 0)
{
mas_str[i] = (char*) calloc(1, sizeof(char));
strcpy(word, main_str);
strcpy(mas_str[i], word);
printf("slovo: %s\n", word);
break;
} else {
word_len = strlen(main_str) - strlen(ptr);
mas_str[i] = (char*) calloc(1, sizeof(char));
strncpy(word, main_str, word_len);
word[word_len] = '\0';
strcpy(mas_str[i], word);
main_str+=word_len+1;
printf("slovo: %s\n", word);
}
i++;
}
printf("Kolichestvo slov = %d\n", k);
for (i=0; i<k; i++)
{
int tmp = 1;
for (j=i+1; j<k; j++)
{
if (strcmp(mas_str[i], mas_str[j]) == 0) tmp++;
}
printf("slovo %s vstrechaetsa %d raz\n", mas_str[i], tmp);
}
getchar();
return 0;
}