void writelines(char** lineptr, int nlines)

{

for (int i = 0; i < nlines; i++)

printf("%s\n", lineptr[i]);

}


는 segfault 안나는데


void writelines(char** lineptr, int nlines)

{

while (nlines-- > 0)

printf("%s\n", *lineptr++);

}

는 segfault 남.


근데 두개가 동일한거 하지 않나?? 이해가안감


main (int argc, char* argv[])

{

int nlines, c;

int numeric = 0;


while (--argc > 0)

if ((*++argv)[0] == '-')

while ((c = *++argv[0]) != 0) {

switch (c) {

case 'n':

numeric = 1;

break;

case 'r':

printf("reverse\n");

break;

}

}


if ((nlines = readlines(lineptr, MAXLINES)) >= 0) {

qsort_e((void **) lineptr, 0, nlines - 1,\

(int (*)(void*,void*))(numeric ? numcmp : strcmp));

printf("%d\n",nlines);

writelines(lineptr,nlines);

freelines(lineptr,nlines);

return 0;

} else {

printf ("input Too Big To sort\n");

return 1;

}

}

이건 main 함수임