2010-11-08 1 views
0

Если у меня есть файл, содержащийстранное поведение Append

manual 
/lib/plymouth/themes/default.plymouth 

/lib/plymouth/themes/spinfinity/spinfinity.plymouth 
10 
/lib/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth 
100 

, а затем открыть его в режиме a, а затем сделать

fprintf(f, "/el/derpito.plymouth\n100\n"); 

почему файл содержащий теперь это?

manual 
/lib/plymouth/themes/default.plymouth 

/lib/plymouth/themes/spinfinity/spinfinity.plymouth 
10 
/lib/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth 
100 

/el/derpito.plymouth 
100

Я бы ожидать, что файл, который будет вместо этого:

manual 
/lib/plymouth/themes/default.plymouth 

/lib/plymouth/themes/spinfinity/spinfinity.plymouth 
10 
/lib/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth 
100 
/el/derpito.plymouth 
100 

+1

Попробуйте Notepad ++ или какой-нибудь другой хороший редактор, который может показать вам пробелы. Кажется, что в конце исходного файла есть дополнительный \ n. – Aamir

+0

Любое разрешение, Delan? –

+0

Странно, нет. Я решил открыть файл в 'r', а другой в' w' и вручную копировать строки до тех пор, пока мне не понадобится добавить больше строк. Затем я удаляю первый файл и переименовываю новый в имя старого. Это явно не изящно, но это лучшее решение, которое я получил до сих пор. –

ответ

1

Возможно есть одинокая \ п или \ CR застрял в конце файла, прежде чем сделать запись. Я открыл его с помощью шестнадцатеричного редактора и посмотрю.

+0

Файл предназначен для завершения одной новой строки. Если я откроюсь в режиме добавления, то напишите что-нибудь (это не начинается с новой строки), я ожидаю, что он будет добавлен непосредственно после строки, предоставленной файлом, а не с другой новой строкой. –

+0

@ Delan вы изучили файл с шестнадцатеричным или другим редактором до и после записи, чтобы показать, что происходит _actually_, а не то, что вы думаете _should_? –

+0

Да. Файл заканчивается на '100 \ n', и я намерен добавить' /el/derpito.plymouth \ n100 \ n', но то, что действительно добавляется, - '\ n/el/derpito.plymouth \ n100'. Это похоже на завершение новой строки, которую я добавил, в начало новых данных. –

0

Мое первое предположение заключалось в том, что последний символ вашего файла (до добавления) является символом новой строки, после которого append добавляет новую строку.

+0

Как уже упоминалось в моих предыдущих комментариях к ответу Сан-Хасинто, файл сначала заканчивается на * one * newline после '100', но мое приложение действует так, как будто их было два. –