c - 跳转到特定行的末尾

标签 c file-io stdio

我正在尝试更改已打开文件中的光标位置。

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,但没有用。

如有任何帮助,我们将不胜感激。

最佳答案

要查找文件中的位置,请使用 fseek() .在 C/C++ 文件处理中,没有关于行开始和/或结束位置的知识,除了存在“行结束标记”,换行符( '\n' )的意义上。

要知道一行的开始或结束位置,您必须自己跟踪它(例如,通过使用 fgetc() 逐字符读取文件,使用 fscanf() 逐元素读取文件或逐行读取 fgets() 以及何时发现某些重要部分,用ftell()保存当前位置。

请注意,虽然 fgets() 可能看起来像知道行,它实际上只是从文件中的位置读取,当字符是换行符时,它会停止。但是没有关于“这一行有 40 个字符长”的知识。

关于c - 跳转到特定行的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422048/

相关文章:

unix - C stdio 输入流如何实现行缓冲?

c - 段错误,我不知道为什么

java - 性能改进 30 分钟内 : How to read only last 10 lines of 100, 000 个文件

Java RandomAccessFile setLength 但用于二进制文件的开头

c - 追加 "a+"是否自动将光标置于末尾

c - 什么是处理 stdio 文件编写函数的返回值的良好编程模式

c - 编写 C 程序在 Linux 上创建一个 1 MB 的文件并出现段错误

c - 删除右侧值较大的节点

c - 如何找到哪个线程被卡住了

c - AT&T 汇编中的算术运算(添加内存和寄存器)