如何在C

时间:2015-06-26 12:17:28

标签: c file-io line

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

  8. 注意i的位置然后用fseek(p,0,SEEK_SET);代替i的0位置,然后写或使用fwrite (buffer , sizeof(char), sizeof(buffer), p);

答案 2 :(得分:1)

如果我已正确理解您的问题,您有LineNumber.LineContent形式的字符串项的无序列表,并且您希望在处理它之后,获取一个文件,其中所有LineContent都写在正确的位置。

我无法想象比以下更好的方式:

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