Перейти к концу конкретной строки
Я пытаюсь изменить положение курсора в открытом файле.
fp = fopen("dirty", "a+");
fprintf(fp, "Text at end of file");
// seek to end of third line (eg.)
fprintf(fp, "Text at end of third line");
Я попытался закрыть и снова открыть файл, и fseek
, который не сработал.
Любая помощь будет принята с благодарностью.
2 ответа
Чтобы найти позицию в файле, используйте fseek()
, Нет никаких знаний в обработке файлов C/C++, чтобы знать, где начинаются и / или заканчиваются строки, за исключением того, что существуют "маркеры конца строки", newline ('\n'
).
Чтобы узнать, где начинается или заканчивается строка, вы должны отслеживать это самостоятельно (например, читая файл символ за символом с помощью fgetc()
элемент за элементом с fscanf()
или построчно fgets()
и когда вы найдете определенные важные детали, используйте ftell()
сохранить текущую позицию.
Обратите внимание, что хотя может показаться, что fgets()
знает о строках, он действительно просто читает из того места, где вы находитесь в файле, и когда символ является новой строкой, он останавливается. Но нет сведений о том, что "эта строка длиной 40 символов".
Вам придется fseek
в начало файла, затем прочитайте char за char с помощью getc
пока вы не нашли третий перевод строки, то ungetc
(который может разблокировать только один символ). Обратите внимание, что вы не можете вставить текст после третьей строки без перезаписи четвертой.
(Вставка в середине файла обычно выполняется путем копирования начальной части, записи новых данных и последующего копирования последней части.)