「stringint」という行を含む標準的に入力されたテキストファイルを調べるプログラムをcで書いています。元々scanfでプログラムを正常に実行していましたが、名前は動的文字列(実行時に既知のサイズ)である必要があり、grade_entryの名前をポインターに切り替えると、セグメンテーション障害が発生しました。
typedef struct grade_entry {
char *name;
int grade;
} grade_entry;
struct grade_entry grade_list[100];
int main(){
int grade;
int done;
int i=0;
do{
puts("not weee\n");
done=(int)strlen(gets(grade_list[i].name));
puts("weee\n");
}while(1);
}
コンパイルされ、現在の出力は次のとおりです。
not weee
segmentation fault(core dumped)
**解決済み:ポインターを割り当ててから、size + 1に再割り当てし、最後にnullを追加しました。scanf、fgets、getsの一時メモリに基づいてすぐにmallocを実行できないのは残念です。まあ、みんな助けてくれてありがとう