2011-05-22 41 views
1

我已经打开使用文件和r +但是当我使用FSEEK和FTELL文件指针始终为0 我的文件是这样的:FSEEK()不工作

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); 
+2

源代码请。 – 2011-05-22 16:11:39

+3

你不能在文件中插入东西 - 你只能修改现有的东西。 – 2011-05-22 16:14:36

回答

1

没有open模式将允许你“插入”数据到一个文件一个随机点。您可以添加数据而不覆盖现有数据的唯一位置是文件的结尾(您可以使用模式“a”打开)。

如果你想插入一个随机的位置,你需要自己做。

其中一种更简单的方法是完全重新编写文件(将旧文件的开头传输到新文件,将数据添加到新文件中,传输剩余的旧文件并重命名/覆盖最后)。

困难的方法:您需要手动将所有数据从插入点“移动”到文件结尾。这是不正确的。

0

没有简单的方法在文件中间插入数据。一个文件基本上是一个字符数组。要在中间添加角色,需要将插入点下的所有内容复制到一个位置。有了一个文件,你需要读取后面的数据并在添加后写入。

通常,当你想做这样的事情时,你可以创建一个新文件。将旧文件复制到要插入的位置,然后写入要插入的数据,然后复制旧文件的其余部分。最后,将新文件重命名为旧文件。

2

就像其他人已经说过的那样,没有简单的方法在文件中间插入数据。如果你真的想这样做,你可以执行以下步骤:

  1. 之前创建第二个文件
  2. 复制所有数据要插入到第二个文件
  3. 插入线的地方要第二个文件
  4. 复制剩下的数据到第二个文件
  5. 删除原始文件
  6. 重命名第二个文件

其他方法是使用二进制文件而不是文本文件。尽管二进制文件有点难学,但一旦你明白了它们的工作方式,你会发现与它们一起工作就像处理数组一样。例如,要执行此任务,您甚至不需要使用辅助文件。

+0

第一次回答路易斯。 – thomasfedb 2011-05-23 12:54:02