如何在C中的文件的特定位置写入一个字符串

How to write a string in a specific position of file in C

我有一些类似于 LineNumber.Number 的字符串,它们来自以前的代码。我将它们拆分为 2 个变量 LineNumberLineContent,之后我想在文件的适当行中写入 LineContent。但是 LineNumber 没有排序,所以也许我应该先写在第 300 行,然后在第 5 行,依此类推。我怎样才能用 C 语言做到这一点?该文件最初是空的,所以我无法计算 \n s.

您可以根据遇到的最大行数分配一个 C 字符串指针数组。当 max 随着你的增加而增加时,你会重新分配。

每次您的代码看到一行的新内容时,它都会重新分配 C 字符串,并复制新内容。

完成后,迭代数组,逐行写入文件。

  1. 首先以 r+ 模式打开该文件,p = fopen("filename.txt","r+");
  2. 取任何 char acline[80] 数组。
  3. 然后使用 fgets(acline,80,p) 这将复制存储在文件 acline[80]
  4. 中第 1 行的数据
  5. 然后使用这种方法搜索特定位置

    for(int i=0;acline[i]!=0;i++)
    {
      if(bla bla bla)
      { //your code }
      else {}
    }
    
  6. char buffer[] = { 'x' , 'y' , 'z' };

  7. 记下i的位置然后用fseek(p,0,SEEK_SET);代替0放i的位置然后写或者用fwrite (buffer , sizeof(char), sizeof(buffer), p);

如果我没有正确理解你的问题,你有一个无序的 list string items 形式 LineNumber.LineContent 和你希望在处理它之后,你会得到一个文件,其中所有 LineContent 都写在正确的位置。

我想不出比 :

更好的方法
  • 将所有项目放入一个数组中(前提是它可以放入内存中)
  • 数组排序(看qsort函数)
  • 一次在项目上打印数组,如果数字中有空洞则添加空行