2017-01-30 2 views
0

Так что в основном то, что я пытаюсь сделать, похоже на grep, например.Поиск по строкам wont print full line

строка ./a.out файл

Вот мой код

fp = fopen(file, "r"); 

while(fgets(buffer, 200, fp) != NULL) 
{ 
    line++; //Add new line 
    if(strstr(pattern, buffer) != NULL) 
    { 
     sprintf(data, "%s", buffer); //So we can tell if the file is clean 
     printf("Wow what do we have here?\n Data:%s\nLine:%d\n", data, line); 
    } 
    else if(data == NULL) 
    { 
     printf("Looks like you are clean :/ or maybe i just suck\n"); 
    } 
} 

Теперь это будет найти строку, но она должна быть в начале строки, например

кошка example.txt

линия # Эта будет найдено

Моя цель состоит в том, чтобы сделать его найти строку в строке и распечатать полную линейку

+6

'strstr (pattern, buffer)' -> 'strstr (buffer, pattern)' – BLUEPIXY

+0

Спасибо за исправление – Nathan

+0

Также 'data == NULL' может никогда не стать правдой. – BLUEPIXY

ответ

3

Определение функции strstr является:

char *strstr(const char *haystack, const char *needle); 

' шаблон, который вы хотите найти, должен быть вашим вторым аргументом, а «buffer» должен быть вашим первым аргументом.

P.S. Ссылаясь на страницы руководства, это очень важная привычка к совершенствованию.

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