char * input = (char*)malloc(256);
scanf("%s", input);
セグフォルト。なんで?Cの文字列は結構苦労するのですが、ここですべてが終わったような気がします。私は、100k+ SO ユーザーから手紙までの例をたどりました。
char * input = (char*)malloc(256);
scanf("%s", input);
セグフォルト。なんで?Cの文字列は結構苦労するのですが、ここですべてが終わったような気がします。私は、100k+ SO ユーザーから手紙までの例をたどりました。
バグの原因は次のとおりです。
<stdlib.h>
mallocの結果を型キャストします。詳細はこちら。文字列の最後にある末尾のNUL(0バイト)用の十分なスペースを含め、バッファーが十分に大きいことを確認する必要があります。そうしないと、セグメンテーション違反につながる可能性のあるバッファオーバーフローが発生します。