我阅读了很多网站,尝试了所有可能的解决方案,但代码打开了文件,但没有写fprintf行,感谢任何帮助
int Function(){
FILE *outputtfilepointer;
outputtfilepointer = fopen("output.csv", "w");
fprintf(outputtfilepointer,"Iteration,5,6,%d,%f\n",5,0.6);
fclose (outputtfilepointer);
return 0;
}
答案 0 :(得分:1)
您是否阅读了fopen(3)和fprintf(3)的文档?这些功能可能会失败,您应该测试:
int Function(){
FILE *outputtfilepointer = fopen("output.csv", "w");
if (!outputfilepointer) { perror("fopen"); exit(EXIT_FAILURE); };
if (fprintf(outputtfilepointer,"Iteration,5,6,%d,%f\n",5,0.6)<0)
{ perror("fprintf"); exit(EXIT_FAILURE); };
if (fclose (outputtfilepointer))
{ perror("fclose"); exit(EXIT_FAILURE);}
return 0;
}
需要fopen
的测试失败(这很容易发生)。很多人
(包括我在内)是蹩脚的,所以不要费心测试fprintf
和fclose
的失败,因为它不太常见。
#include <stdlib.h>
exit
当然,请阅读您正在使用的每个功能的文档,例如还有fclose(3),perror(3),exit(3)
注意处理错误情况的最小模式:使用perror
(到 stderr )打印errno
相关消息,然后exit
。许多严肃的程序正在做更复杂的事情(例如在某些错误处理程序中使用strerror(errno)
和longjmp
...)
gcc -Wall -g
)和使用调试器(gdb
)。在Linux上,您还可以使用valgrind,strace(1),ltrace(1)