witam, mam taki banalny programik (jest to prosty grep z książki K&R) i zawsze jak wywołam go to mam błąd "Naruszenie ochrony pamięci".
doszedłem do tego że błąd jest w funkcji strstr w 2 argumencie, jak wywołam na sztywno tak: (strstr(line, "define") to działa. O co chodzi? Np. takie coś działa: printf("%s", argv[1]); wieć czemu tutaj nie działa?
// grep.c
//
//test
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000
int getline2(char s[], int lim);
//char * strstr ( const char *, const char * );
// wypisz wiersze pasujące do wzorca z 1 argumentu
int main(int argc, char *argv)
{
char line[MAXLINE];
int found=0;
if(argc!=2)
printf("format wywołania: find wzorzec\n");
else
while(getline2(line, MAXLINE) > 0)
if(strstr(line, argv[1]) != NULL) {
printf("%s", line);
found++;
}
return found;
}
int getline2(char s[], int lim)
{
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; i++)
s[i] = c;
if (c == '\n') {
s[i++] = c;
}
s[i] = '\0';
return i;
}