初めてDDDを使用しています。問題の主題(UNIX環境ではc)にはとても慣れていないので、何か見落としている可能性があります。 通常のgccコンパイルでは発生しないファイルからfscanfを実行しようとすると、セグメント化エラーが発生します。機能は以下の通りである:DDD(データ表示デバッガ)を使用しているときのSIGSEV
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、セグメンテーション障害を受けました。 __isoc99_fscanfで0xb7e58e1e()/lib/i386-linux-gnu/lib.so.6
から、私はこの問題を引き起こしている可能性がありますかを把握することはできません。前もって感謝します!
入力ファイルがscanfに合っていることと、引数として与えられたポインタが型に合っていること、そして格納する必要があるものを格納するのに十分な領域があること... Btw fgets + strtokを使用することが好ましい –
ファイルが '現在のディレクトリに存在しないか、またはあなたがそれを読むことを許可されていませんか? (あなたの友人である) – wildplasser
@wildplasserファイルは実行可能ファイルと同じディレクトリにあり、 'chmod(" config.txt "、0644);'を追加してアクセス権があることを確認しています注文。また、if(fscanf(fp、 "TRIAGE =%dDOCTORS =%dSHIFT_LENGTH =%dMQ_MAX =%d"、&data.triage、&data.doctors、&data.shift、&data.mq_max == EOF){ perror "ファイルから読み込めませんでした"); } ' – NUGA