这是我第一次使用DDD,而且我对相关主题(c在unix环境中)缺乏经验,所以我可能会忽略某些东西。 当我尝试从文件中fscanf时,我收到了分段错误,这在正常的gcc编译中没有发生。功能如下:
void read_config(){
FILE *fp;
fp = fopen("config.txt","r");
fscanf(fp,"TRIAGE=%dDOCTORS=%dSHIFT_LENGTH=%dMQ_MAX=%d ",&data.triage,&data.doctors,&data.shift,&data.mq_max);
}
在阅读fscanf行之后,它在DDD中给出以下消息:
编程接收信号SIGSEGV,分段故障。 0xb7e58e1e in 来自/lib/i386-linux-gnu/lib.so.6的__isoc99_fscanf()
我无法弄清楚可能导致此问题的原因。提前谢谢!
答案 0 :(得分:0)
我无法弄清楚可能导致此问题的原因。
在调试器中查找fp
的值。它将是NULL
。
您应该始终检查您呼叫的每个系统功能的返回值。
该文件与可执行文件位于同一目录中
那没关系。当您致电fopen
时,重要的是您的当前目录。
除非您指示DDD
更改为config.txt
所在的目录,否则DDD
可能正在从其他目录运行。