2014-12-06 143 views
1

我遇到字符串读取问题。从Hell13 World我需要得到13号从字符串中读取数字

while (*znak){ 
    if (isdigit(*znak)){ 
    x=*znak - '0'; 
    printf("%d\n", x); 
    } 
    *dst++ = * znak; 
    znak ++; 
    } 

我的解决方案,我得到的1号和3号分开。

+0

'Hell1 World3'的情况也得到'13'吗? – BLUEPIXY 2014-12-06 13:33:33

+1

当然你会分开得到数字,因为你用'if'检查数字。如果你想看看连续数字的序列,你应该使用'while'。 (在数字上,也就是说,整个'while'用于遍历整个字符串。) – 2014-12-06 13:36:13

回答

1

您只能得到第一位数字然后打印出来。看到一个数字后,你必须循环,直到你看不到更多的数字。

if (isdigit(*znak)){ 
    while (*znak && isdigit(*znak)) 
     x= x*10 + *znak++ - '0'; 
    printf("%d\n", x); 
} 
+0

对* znak'(我想知道它是什么意思?)的双重检查是没有必要的,因为'isdigit(0)'应该已经是假的了。 – usr2564301 2014-12-06 13:42:50

+1

你是对的,isdigit(0)将是错误的。只是一个讨厌的习惯来检查字符串结尾...... – 2014-12-06 14:09:52