0

このコードがクラッシュし続ける理由がわかりません:

int main(void)
{
char input[13];
int i;

fgets(input,sizeof(input),stdin);
i = atoi(input[0]);

return 0;
}

'1' (引用符なし) と入力すると、プログラムがクラッシュします。コンパイラはmingwです。

4

2 に答える 2

3

atoiが期待されるため、クラッシュしchar *ます。この場合に を与えると、char提供された値が実際には何かへのポインターではないことをコンパイラーに伝えるものは何もありません。そのため、プログラムは最終的にクラッシュします。

これを次のいずれかに変更できます。

i = atoi(input);

また

i = atoi(&input[0]);

于 2013-11-14T22:06:18.517 に答える
2

atoichar *単一の ではなく (C 文字列)が必要charです。変化する:

i = atoi(input[0]);

に:

i = atoi(input);

また、常に警告を有効にしてコンパイルする必要があることに注意してください (例: gcc -Wall ...)。これを行っていれば、コンパイラが間違いを指摘してくれます。

于 2013-11-14T21:57:37.297 に答える