У меня есть FILE* file
, который содержит некоторые двоичные данные. Предположим, что эти данные являются списком double и последняя запись представляет собой строку, которая описывает, что такое double. Я хочу изменить эту строку (новая строка может быть короче). Поэтому сначала я удаляю старую строку. Мне нужно найти начальную точку строки:Обрезать или изменить размер файла, чтобы изменить его конец
fseek(file,-size(sring.size()),SEEK_END);
а затем что мне делать? я нашел Delete End of File ссылку, но я не знаю, какой из них использовать ... Как только файл будет изменен, я могу просто написать свою новую строку, используя fwrite
?
отличный ответ, но он поднимает несколько вопросов для второго решения, которое вы предложить. вы имеете в виду, что мне нужно сначала сфотографироваться, а затем найти, где я хочу усечь, затем fclose, open why? почему я не могу оставить файл открытым? и что вы подразумеваете под «Если вам не нужно переводить двойники, то действительно ничего не добавляет FILE *». – PinkFloyd
Связано это с комментарием, который вы даете @ aaaaaa123456789? – PinkFloyd
@ user2110463 Второй вопрос во-первых: что '' (и iostream) действительно добавить к вашему основному системному уровню IO 1) переносимость 2) разбор различных типов ввода ('double', ' int' и т. Д.) , Если вам не нужен последний, и вы используете 'ftruncate', то у вас нет первого, вы можете также сделать все с точки зрения базового уровня системы ввода-вывода. –