文件已打开但未写入

时间:2014-10-03 05:07:04

标签: c printf

我阅读了很多网站,尝试了所有可能的解决方案,但代码打开了文件,但没有写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;
}

1 个答案:

答案 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的测试失败(这很容易发生)。很多人 (包括我在内)是蹩脚的,所以不要费心测试fprintffclose的失败,因为它不太常见。

#include <stdlib.h>

需要exit

当然,请阅读您正在使用的每个功能的文档,例如还有fclose(3)perror(3)exit(3)

注意处理错误情况的最小模式:使用perror(到 stderr )打印errno相关消息,然后exit。许多严肃的程序正在做更复杂的事情(例如在某些错误处理程序中使用strerror(errno)longjmp ...)

顺便说一句,您应该编译所有警告和调试信息(例如gcc -Wall -g)和使用调试器gdb)。在Linux上,您还可以使用valgrindstrace(1)ltrace(1)