[英]pointer of char array to integer in c
這是我的代碼:
char str[] ="";
scanf("%s",&str);
char * pch;
pch = strtok (str,"#");
printf ("%s\n",pch);
return 0;
我需要將“1#2#3”的輸入呈現為第一,第二和第三的三個整數。 我上面的代碼只處理第一個變量並打印第一個字符串“1”但我想將它保存到int變量。
我試過了:
int first = atoi(&pch)
但是'first'得到的值是0而不是1.我怎樣才能將數組char的指針解析為int?
代碼具有未定義的行為,因為str
不足以處理任何輸入。 str
最多可以保存1個char
而scanf()
在讀入字符串時會附加一個空終結符。 如果用戶輸入單個字符並點擊返回,則scanf()
將寫入超出數組str
的邊界。
要更正,請確定可接受的字符串的最大長度,並通過閱讀更多內容來阻止scanf()
:
char str[1024];
if (1 == scanf("%1023s", str))
{
}
請注意,對於無效輸入或"0"
, atoi()
產生的結果為0
,這沒有用。 使用strtol()
代替或者從dasblinkenlight看到答案以獲得更簡單的解決方案。
你將char*
傳遞給atoi(),而不是char**
。 只需將其稱為atoi(pch)
你已經將str聲明為char str [] =“”;。 這將只為str分配一個字節。 它運作正常嗎? 我希望我在這里不會遺漏一些東西。
至於strtok,你需要在while循環中使用它
pch = strtok (str,"#");
while (pch != NULL)
{
printf ("%s\\n",pch);
pch = strtok (NULL, "#");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.