Я читаю простой текст из файла - построчно, со следующей функцией:
int readline(FILE *in, char * buf) {
char c;
buf[0]='\0';
for (int i=0; i<BUFSIZ-1; i++) {
fread(&c,1,1,in);
if (ferror(in)) return 1;
if (feof(in)) break;
buf[i]=c;
if (c=='\n') break;
}
if (buf[BUFSIZ-1]!='\0') return 1;
return 0;
}
Он правильно читает 28816 символов, и затем начинается проблема.
Вместо чтения следующих четырех символов:
' ' 'f' 'o' 'r'
читает странную вещь:
'\x01' '\0' '\0' '\0'
После этого он все правильно читает до 33080 символов.
Вместо правильного чтения следующих 12 символов, он читает три последовательности:
'\x01' '\0' '\0' '\0' '\x01' '\0' '\0' '\0' '\x01' '\0' '\0' '\0'
Затем он снова все читает правильно, до определенного момента.
При возникновении этой проблемы не было ни условия (ferror (in)), ни (feof (in)) true.
Есть ли у вас какие-либо идеи о причине этой проблемы?