我不知道爲什麼這個代碼保持崩潰:程序崩潰
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 ...
)編譯器 - 如果你已經做到了這一點,則編譯器會很有幫助指出你的錯誤的您。
請告訴爲什麼?否則,這看起來像魔術。 –
所以我想atoi需要\ 0字符。如果我輸入1234並且我想要每個個人數字怎麼辦? – MABC
沒有足夠的代表評論其他答案,但是如果你想單獨使用值'1234',你最好迭代字符串,並使用charValue - '0'來獲取int值。 – sgwizdak