簡體   English   中英

char數組的指針到c中的整數

[英]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個charscanf()在讀入字符串時會附加一個空終結符。 如果用戶輸入單個字符並點擊返回,則scanf()將寫入超出數組str的邊界。

要更正,請確定可接受的字符串的最大長度,並通過閱讀更多內容來阻止scanf()

char str[1024];
if (1 == scanf("%1023s", str))
{
}

請注意,對於無效輸入或"0"atoi()產生的結果為0 ,這沒有用。 使用strtol()代替或者從dasblinkenlight看到答案以獲得更簡單的解決方案。

如果您知道輸入的精確布局以及int的確切數量,則可以大大簡化:

scanf("%d#%d#%d", &a, &b, &c);

這是一個關於ideone的演示鏈接

你將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM