fprintf iofputs.c上的分段错误:没有这样的文件或目录

时间:2017-08-22 13:15:49

标签: c++ gdb

我有以下代码:

    FILE* fp;
    if(value.empty())
      return ID;
    fp=fopen((tmpDir+"/"+filename).c_str(),"a");
    string sID="";
    if(ID>-1){
      sID=to_string(ID)+"\t";
    }
    string row=sID+drawingID+"\t"+data+"\n";
    fprintf(fp,"%s",row.c_str());
    fclose(fp);

在GDB下,代码失败并出现以下错误:

    Program received signal SIGSEGV, Segmentation fault.
    __GI__IO_fputs (str=0x4a864 "1000001\t0\t70\t1\n", fp=0x0) at iofputs.c:38
    38  iofputs.c: No such file or directory.

1 个答案:

答案 0 :(得分:4)

您未检查fopen的结果。

根据错误消息fp为0,表示fopen失败。

我猜,tmpDir不存在或不可访问,或者文件不存在。