2013-05-07 2 views
0

Я хочу написать некоторые данные о уже существующем файле. Это файл, содержащий около 8-10 строк заголовка (# комментариев), а затем тысячи строк data values. Я хочу сохранить заголовок таким же, но добавить обновленный файл data values в файл. Вполне возможно, что после обновления у меня меньше номеров строк data values.Как написать на определенной строке в файле?

Так что в основном я хочу стереть все после последнего # комментария в заголовке, а затем начать писать новые значения оттуда. Это возможно?

Вот пример:

Оригинал Файл

#Program 
#Date 
#Hello 
0 23 23 54 
1 12 4 2 
2 253 786 9887 
3 3 23 54 
4 1 4 4 
5 23 6 81 

Обновлено Файл

#Program 
#Date 
#Hello 
0 2 23 54 
2 253 786 9887 
5 23 6 81 

Код я редактирования использует fopen, чтобы прочитать файл и fprintf писать в него. Я бы предпочел, чтобы ответы были в этих строках, поэтому мне не нужно менять эти два.

+1

Почему вы используете 'fopen'? В C++ вы должны использовать 'std :: fstream'. – mwerschy

+0

Программное обеспечение, над которым я работаю, использует fopen. – detraveller

+0

А хорошо ... Просто было бы проще с 'getline';) – mwerschy

ответ

6

Простейший способ, которым я придумал, - открыть Original File, прочитать и скопировать заголовок в память, например string header. Затем перепишите весь файл, записав header, затем новые данные

+0

Вы предлагаете написать над существующим файлом? Поскольку это не самая лучшая идея, по крайней мере, если вы беспокоитесь о поврежденных данных, когда что-то пойдет не так во время написания. – jrok

+0

@jrok Я не * предлагаю *, что OP делает. Как первое предложение OP в вопросе: «Я хочу написать некоторые данные по уже существующему файлу». – GuLearn

+0

@jrok Если я не полностью переписываю/перезаписываю, тогда какая альтернатива? – detraveller

2

Напишите функцию, которая считывает заголовки из файла и сохраняет их в класс/переменную/структуру.

Написать функцию, которая записывает заголовки в файл

Написать функцию, которая записывает нужные значения в файл

Выполнить все три функции в указанном порядке. Тот факт, что это тот же файл, который вы перезаписываете, не имеет значения, просто обязательно закройте его, прежде чем писать обратно.

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