gpt4 book ai didi

c - C 中文件 I/O 的一些最佳实践是什么?

转载 作者:太空狗 更新时间:2023-10-29 14:54:09 25 4
gpt4 key购买 nike

我正在编写一个供个人使用的相当基础的程序,但我真的想确保我使用了良好的实践,尤其是当我决定以后让它变得更健壮时。

出于所有意图和目的,程序接受一些输入文件作为参数,使用 fopen() 打开它们,从文件中读取,用这些信息做一些事情,然后将输出保存为一些子文件夹中的不同文件。例如,如果程序在 ~/program 中,则输出文件保存在 ~/program/csv/

我只是直接输出到文件,例如 output = fopen("./csv/output.csv", "w");,用 fprintf(output "%f,%f", data1, data2); 在一个循环中,然后用 fclose(output); 关闭,我觉得这是不好的做法。

我是否应该在写入时将其保存在临时目录中,然后在完成后移动它?我应该使用更高级的文件 i/o 库吗?我是不是完全想多了?

最佳答案

我眼中的最佳实践:

  • 检查对 fopen、printf、puts、fprintf、fclose 等的每次调用是否有错误
  • 必要时使用 getchar,如果可以则担心
  • 必要时使用putchar,可以时使用fwrite
  • 避免任意限制输入行长度(可能需要 malloc/realloc)
  • 知道何时需要以二进制模式打开输出文件
  • 使用标准 C,忘记 conio.h :-)
  • 换行符属于一行的结尾,而不是某些文本的开头,即 printf ("hello, world\n"); 而不是“\nHello, world” 就像那些被强大的 William H. 误导的人一样,他们经常写来应对他们命令 shell 的愚蠢。输出换行符首先中断行缓冲 I/O。
  • 如果您需要超过 7 位的 ASCII,请选择 Unicode (最常见的编码是与 ASCII 兼容的 UTF-8)。这是您需要学习的最后一种编码。远离代码页和 ISO-8859-*。

关于c - C 中文件 I/O 的一些最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15419181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com