我遇到字符串讀取問題。從Hell13 World
我需要得到13號從字符串中讀取數字
while (*znak){
if (isdigit(*znak)){
x=*znak - '0';
printf("%d\n", x);
}
*dst++ = * znak;
znak ++;
}
我的解決方案,我得到的1號和3號分開。
我遇到字符串讀取問題。從Hell13 World
我需要得到13號從字符串中讀取數字
while (*znak){
if (isdigit(*znak)){
x=*znak - '0';
printf("%d\n", x);
}
*dst++ = * znak;
znak ++;
}
我的解決方案,我得到的1號和3號分開。
您只能得到第一位數字然後打印出來。看到一個數字後,你必須循環,直到你看不到更多的數字。
if (isdigit(*znak)){
while (*znak && isdigit(*znak))
x= x*10 + *znak++ - '0';
printf("%d\n", x);
}
對* znak'(我想知道它是什麼意思?)的雙重檢查是沒有必要的,因爲'isdigit(0)'應該已經是假的了。 – usr2564301 2014-12-06 13:42:50
你是對的,isdigit(0)將是錯誤的。只是一個討厭的習慣來檢查字符串結尾...... – 2014-12-06 14:09:52
'Hell1 World3'的情況也得到'13'嗎? – BLUEPIXY 2014-12-06 13:33:33
當然你會分開得到數字,因爲你用'if'檢查數字。如果你想看看連續數字的序列,你應該使用'while'。 (在數字上,也就是說,整個'while'用於遍歷整個字符串。) – 2014-12-06 13:36:13