我有以下代码:
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.
答案 0 :(得分:4)
您未检查fopen
的结果。
根据错误消息fp
为0,表示fopen
失败。
我猜,tmpDir不存在或不可访问,或者文件不存在。