2014-11-30 4 views
0

У меня есть проблема с моим кодом. Я исследовал тему в stackoverflow и нашел решения, но они, похоже, не работают. Вот мой код:Программа C для поиска числа вхождений подстроки в строке

#include <stdio.h> 
#include <string.h> 

int main() { 
    char sentence[1000]; 
    char word[100]; 
    int count=0; 
    fgets(sentence, 999, stdin); 
    fgets(word, 99, stdin); 
    int word_len=strlen(word); 
    char *p; 
    for(p=(char*)sentence; (p=strstr(p, word)); p+=word_len) 
    { 
     ++count; 
    } 
    printf("%d", count); 
    return 0; 
} 

Но он не печатает 1 в любом случае, независимо от того, сколько раз слово встречается в предложении. Любая помощь?

+1

удалить строку из 'слово'. – BLUEPIXY

+1

Вы тратите 1 байт в каждом массиве char. Вы можете использовать весь размер массива в вызове fgets(): 'fgets (предложение, sizeof предложение, stdin);' – pmg

+0

Хммм ... сколько раз «aba» существует в «abababa»? Два или три? – pmg

ответ

0

изменение

.... 
fgets(word, 99, stdin); 
char *p = strchr(word, '\n'); 
if(p) 
    *p = 0; 
int word_len=strlen(word); 
for(p=sentence; (p=strstr(p, word)); p+=word_len) 
.... 
+0

Он также работает, если я использую scanf% s для слова, так как мне не нужны пустые пространства в этой строке. Спасибо за совет! –

Смежные вопросы