我正在编写一个供个人使用的相当基本的程序,但我真的想确保我使用好的做法,特别是如果我决定以后更强大或者其他什么。
对于所有意图和目的,程序接受一些输入文件作为参数,使用fopen()
从文件读取打开它们,对该信息执行操作,然后将输出保存为子文件夹中的几个不同文件。例如,如果程序在~/program
中,则输出文件保存在~/program/csv/
我只是直接输出到文件,例如output = fopen("./csv/output.csv", "w");
,在循环中用fprintf(output,"%f,%f", data1, data2);
打印到它,然后用fclose(output);
关闭,我觉得这是不好的做法
我应该将它保存在临时目录中吗?它会被写入,然后在它完成后移动它?我应该使用更高级的文件i / o库吗?我只是完全过度思考这个吗?
答案 0 :(得分:7)
我眼中的最佳做法:
printf ("hello, world\n");
而非"\nHello, world"
,就像Mighty William H误导的那些经常写,以应对他们的命令外壳的愚蠢。答案 1 :(得分:4)
我只是完全过分思考这个吗?
你是。如果任务很简单,不要因为感觉“更专业”而故意制定复杂的解决方案。虽然您是初学者,但专注于代码可读性,它将促进您和他人的生活。
答案 2 :(得分:0)
没关系。默认情况下,I / O使用stdio
文件函数进行完全缓冲,因此每次调用fprintf
时都不会写入文件。实际上,在许多情况下,在您致电fclose
之前,不会写任何内容。
最好检查fopen
的返回,完成后关闭文件等等。让操作系统和编译器完成其余的工作,这对于像这样的简单程序。
答案 3 :(得分:0)
如果没有其他程序检查是否存在~/program/csv/output.csv
进行进一步处理,那么您所做的就是没问题。
否则,您可以考虑写入通过调用tmpfile
in stdio.h或类似库调用获得的FILE *
,并在完成时将文件复制到最终目的地。您还可以放下一个锁定文件output.csv.lck
并在完成后将其删除,但这取决于您是否能够修改其他程序的行为。
答案 4 :(得分:0)
您可以制作自己的cat
,cp
,mv
计划进行练习。