我使用和r +打开了一个文件,但是当我使用fseek和ftell时,文件指针总是为0。 我的文件看起来像这样:
1 -3
2 -8
我想在两者之间添加另一行,但在最后一行之后添加到最后一行。 另一个论坛中的某个人说当你在追加时打开文件时,指针总是为零,你必须在r +中打开它,如果这不起作用“你必须读取完整的数据,然后在变量和数据中插入数据把它写回来。“但是我不明白他们的意思。
任何人都可以帮助在文件中间插入数字吗?
谢谢!
这样的事情会起作用吗? 转移数据?
rewind(fp);
fscanf(fp,"%d",&ch);
fprintf(fp1,"%d",ch);
fseek(fp,1,0);
fscanf(fp,"%d",&ch);
fprintf(fp1,"%d",ch);
答案 0 :(得分:2)
与其他人已经说过的一样,没有简单的方法可以在文件中间插入数据。如果您真的想这样做,可以执行以下步骤:
其他方法是使用二进制文件而不是文本文件。虽然二进制文件有点难以学习,但是一旦你理解了它们的工作方式,你就会发现使用它们就像使用数组一样。例如,要执行此任务,您甚至不需要使用辅助文件。
答案 1 :(得分:1)
没有open
模式允许您在随机点将数据“插入”到文件中。唯一可以在不覆盖现有数据的情况下添加数据的地方是文件的结尾(以“a”模式打开的内容)。
如果你想在随机位置插入,你需要自己动手。
其中一种更简单的方法是完全重写文件(将旧文件的开头传输到新文件,将数据添加到新文件,传输旧文件的其余部分,然后重命名/覆盖结束)。
困难的方法:您需要手动将所有数据从插入点“移位”到文件结尾。要做到这一点并非易事。
答案 2 :(得分:0)
没有一种简单的方法可以在文件中间插入数据。文件基本上是一个字符数组。要在中间添加字符,您需要将插入点后面的所有内容复制到一个位置。使用文件,您需要读取后面的数据并在添加后写入。
通常,当您想要执行此类操作时,您需要创建一个新文件。将旧文件复制到要插入的位置,然后编写要插入的数据,然后复制旧文件的其余部分。最后,将新文件重命名为旧文件。