fgets и EOF
От: Аноним  
Дата: 27.01.05 16:15
Оценка:
Имеется несложный код:
#include <stdio.h>
#include <fcntl.h>
#define MAXLINE 1024

char* readstrsk(char* line_out);

int main () {
const char *pathtofile = "/usr/local/script/c++_code/openfile/1.txt";
FILE *READFILE;
char* line,*outline;
char lit;
READFILE=fopen(pathtofile,"r");
if (READFILE == NULL) {
printf ("Error while openning file\n");
exit(1);
}

while (fgets(line,MAXLINE,READFILE) != NULL) {
int leng;

leng = strlen(line);
if (leng != 1) {
printf("%s",line);
}
}


printf("%s hahahahahaha\n");
fclose (READFILE);
return(0);
}

Вот только он вываливается в корочку с таким вот выводом:
root@server /usr/local/script/c++_code/openfile/#./a.out
server = freebsd2.owe
port= 3128
ip =192.168.10.114
user = skif
password=password
Ошибка сегментации (core dumped)
root@server /usr/local/script/c++_code/openfile/#

То бишь он считывает весь файл, а потом вываливается в корочку. Насколько я разобрал, проблема находиться в while (fgets(line,MAXLINE,READFILE) != NULL) — fhets по какой-то причине возвращает не NULL значение и соответственно программа ни как не реагирует на присутствие EOF, а следовательно валится в корку.
Почему такое происходит?
Или я не прав?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.