分段错误:没有这样的文件或目录
我有以下代码:分段错误:没有这样的文件或目录
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.
你没有检查fopen
的结果。
根据错误信息fp
为0,表示fopen
失败。
我猜测,tmpDir不存在或不可访问,或者文件不存在。
我建议有更多基本的东西是错误的,比如尝试使用“+”运算符连接字符串。虽然你说的是真的,但并不是事情突破的原因。 –
如果'tmpDir'和'filename'的类型为'std :: string',则@DavidHoelzer将字符串与'+'连接起来可以。 'c_str()'的用法表明代码实际上是C++。 –
啊,你是对的。我依靠问题中的“C”标签。 –
'fp = fopen((tmpDir +“/”+ filename).c_str(),“a”);'This is not C. –
你不能做'tmpDir +'/“+ filename'它不是C++ –
你的在调用fopen后,代码无法检查fp是否为NULL。如果文件无法打开,'fopen'返回NULL。 –