2014-03-03 4 views
2

Я пытаюсь использовать функцию strstr в C для более крупного проекта и не могу заставить ее работать, поэтому я создал небольшой тестовый файл, чтобы лучше изучить его , только проблема - результаты не то, что я ожидал. Может ли кто-нибудь объяснить мне, основываясь на этом файле c, который у меня есть, что strstr должен вернуть для меня и как я его неправильно использую? Когда я запускаю эту программу, он возвращает NULL для всех применений strstr, я ожидаю, что он вернет NULL для первых 2, но для одного из вторых двух (я не знаю обоих) он должен напечатать строку «кисть». Что я делаю неправильно или ожидаю не так?Ищете лучшее понимание функции strstr в C

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

int main(void) { 

char str1[11]="toothpaste"; 
char str2[11]="toothbrush"; 
char str3[6]="brush"; 
char str4[6]="paste"; 

printf("\n\nstr1=%s",str1); 
printf("\nstr2=%s",str2); 
printf("\nstr3=%s",str3); 
printf("\nstr4=%s",str4); 

printf("\n\nResult of strstr(1,2) is %s",strstr(str1,str2)); 
printf("\nResult of strstr(2,1) is %s",strstr(str2,str1)); 
printf("\nResults of strstr(2,3) is %s",strstr(str1,str3)); 
printf("\nResults of strstr(3,2) is %s\n\n",strstr(str3,str1)); 

return 0; 
} 
+0

'strstr (str2, str3)' и 'strstr (str1, str4)' не должен возвращать NULL –

+0

Вы путали 'str1' (зубная паста) и str2 (зубная щетка). Если вы попробуете 'strstr (str2, str3)', вы должны получить более значимый результат. –

+0

Почему двум последним ничего не нужно, кроме «NULL»? «Зубная паста» 'не содержит« кисть », а« кисть »' не содержит «зубную пасту». – TypeIA

ответ

4

Последние два случая называют strstr на str1 и str3 (неstr2). Таким образом, они ищут "brush" в "toothpaste" и наоборот.

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