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

Dav*_*try 0 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);
Run Code Online (Sandbox Code Playgroud)

在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.
Run Code Online (Sandbox Code Playgroud)

ste*_*ert 5

您没有检查的结果fopen

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

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