2014-12-06 3 views
1

문자열 읽기에 문제가 있습니다. Hell13 World에서 나는 개별적으로 1 번과 3 번을 얻을 수 내 솔루션 (13)문자열에서 숫자 읽기

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

을 얻을 필요가있다.

+0

'Hell1 World3'케이스도 '13 '이됩니까? – BLUEPIXY

+1

'if'로 숫자를 확인하기 때문에 물론 숫자를 따로 얻고 있습니다. 일련의 연속 자릿수를보고 싶다면'while '을 사용해야합니다. –

답변

1

첫 번째 숫자 만 가져 와서 인쇄하십시오. 숫자를보고 나면 더 이상 숫자가 표시 될 때까지 반복해야합니다.

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

'* znak'에 대한 이중 검사 (이것이 무엇을 의미하는지 궁금합니까?)는 필요하지 않습니다. 왜냐하면'isdigit (0)'은 다음과 같아야하기 때문입니다. (숫자에 대해서는 즉, 전체 문자열을 가로 지르는 것입니다. 이미 거짓이다. – usr2564301

+1

맞습니다. isdigit (0)은 거짓입니다. 문자열의 끝을 검사하는 단지 불쾌한 습관 ... –