2014-01-15 6 views
2

по какой-то причине fgets правильно считывает строки из файла, пока не достигнет определенной строки, где он просто получает часть строки. Я проверил файл с помощью Hex-редактора, и в середине этой строки не было нового символа строки.fgets не читает целую строку, не встречается новый символ строки

файла: (. Довольно большой fgets останавливается на линии 269)

/mmc_data/add_rootfs 
... 
/mmc_data/add_rootfs/data/local/sbin/mcast 

Вот строка 269 в шестнадцатеричном представлении:

2f 6d 6d 63 5f 64 61 74 61 2f 61 64 64 5f 72 6f 6f 74 66 73 2f 64 61 74 61 2f 6c 6f 63 61 6c 2f 73 62 69 6e 2f 6d 63 61 73 74 0a 

Я просто комбинируя fgets с printf:

char cBuffer[1024]=""; 
while(fgets(cBuffer,1024,fpLog){ 
printf("%s\n",cBuffer); 
} 
... 

Программа выводит все правильно до тех пор, пока она достигает линии 269 и это только печатает:

/mmc_data/a 
instead of 
/mmc_data/add_rootfs/data/local/sbin/mcast 

1024 Bytes явно не была достигнута, а также символ новой строки. Так почему фэсты останавливаются на этом посту?

+0

Мы уверены, что это неправильный вход, а не выход? Что говорит 'strlen (cBuffer)' say? – Medinoc

+0

strlen возвращает 11. –

+0

Цикл while выходит после того, как напечатал такие 11 символов? – alk

ответ

4

Решено: я создал файл перед тем, как попытаться получить доступ к его содержимому. Я не хотел закрывать файл. Таким образом, последняя часть осталась в буфере и не была записана в файл. Я решил проблему, используя fflush(fpLog) между записью и чтением

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