このコードがクラッシュし続ける理由がわかりません:
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]);
atoichar *単一の ではなく (C 文字列)が必要charです。変化する:
i = atoi(input[0]);
に:
i = atoi(input);
また、常に警告を有効にしてコンパイルする必要があることに注意してください (例: gcc -Wall ...)。これを行っていれば、コンパイラが間違いを指摘してくれます。