このコードがクラッシュし続ける理由がわかりません:
int main(void)
{
char input[13];
int i;
fgets(input,sizeof(input),stdin);
i = atoi(input[0]);
return 0;
}
'1' (引用符なし) と入力すると、プログラムがクラッシュします。コンパイラはmingwです。
このコードがクラッシュし続ける理由がわかりません:
int main(void)
{
char input[13];
int i;
fgets(input,sizeof(input),stdin);
i = atoi(input[0]);
return 0;
}
'1' (引用符なし) と入力すると、プログラムがクラッシュします。コンパイラはmingwです。
atoi
が期待されるため、クラッシュしchar *
ます。この場合に を与えると、char
提供された値が実際には何かへのポインターではないことをコンパイラーに伝えるものは何もありません。そのため、プログラムは最終的にクラッシュします。
これを次のいずれかに変更できます。
i = atoi(input);
また
i = atoi(&input[0]);
atoi
char *
単一の ではなく (C 文字列)が必要char
です。変化する:
i = atoi(input[0]);
に:
i = atoi(input);
また、常に警告を有効にしてコンパイルする必要があることに注意してください (例: gcc -Wall ...
)。これを行っていれば、コンパイラが間違いを指摘してくれます。