【问题标题】:How to store an array of strings in a file using C (one string per line)?如何使用 C 将字符串数组存储在文件中(每行一个字符串)?
【发布时间】:2020-12-02 15:40:17
【问题描述】:

我想在文本文件中存储一些字符串(每行一个字符串),但在编译时,在文本文件中每个字符串的末尾添加了一些不必要的零。 以下是我的代码:- **

#include <stdio.h>
#include <string.h> 

    int main()
    {
        int i=0;
        char *name[4]={"ABC","agb","thi","yuun"};
        FILE *pp;
        pp=fopen("random_name.txt","w");
        for(int i=0;i<4;i++)
        {
            fwrite(name[i],strlen(name[i])+1,1,pp);
            fputs("\n",pp);
        }
        fclose(pp);
        return 0;
    }

** Here's the text file

【问题讨论】:

  • 为什么这样:'strlen(name[i])+1'?

标签: c file-handling


【解决方案1】:

只需从 strlen(name[i])+1 中删除 +1 并更新您的 fwrite() 函数:

fwrite(name[i],strlen(name[i]),1,pp);

【讨论】:

    【解决方案2】:

    在文本中每个字符串的末尾添加不必要的零 文件。

    原因:每个name[i] 字符串都以\0(ASCII 0)结尾。您将strlen(name[i])+1 作为fwrite 的参数。因此,空终止字符 (\0) 也将写入文件。

    解决方案:为避免这种情况,请将fwrite(name[i],strlen(name[i])+1,1,pp); 更改为fwrite(name[i],strlen(name[i]),1,pp);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2020-08-01
      • 2017-09-06
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多