C中的文件I/O有哪些最佳实践?

Chr*_*man 5 c io file

我正在编写一个供个人使用的相当基本的程序,但我真的想确保我使用好的做法,特别是如果我决定让它在以后变得更强大或者某些东西.

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

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

我应该将它保存在临时目录中吗?它会被写入,然后在它完成时移动它?我应该使用更高级的文件i/o库吗?我只是完全过分思考这个吗?

Jen*_*ens 7

我眼中的最佳做法:

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