2016-11-18 1 views
0

가 내 문제가 예를 들어 scanf();인쇄 번호는

관련이없는 입력 : 입력 ->542-4Output ->5,4,2,-4

내 말은, 음수와 음수까지 인쇄 할 수 있습니다. 음수가 될 때까지는 오케이이지만 음수도 인쇄하고 싶습니다. 어떻게해야합니까? 도와주세요. 나는 getchar(), isdigit(), int a=x-'0'

char x =getchar(); 
while(isdigit(x)){ 
    int a=x-'0'; 
    printf("%d,",a); 
    x=getchar(); 
} 
+2

scanf와는 어떻게 연관되는지 그것은 분명하지 않다. 질문에있는 코드에 대한 입력 및 출력과 예상 출력이 무엇인지 명확히 할 수 있습니까? –

+0

내 입력은 458-1715이고 출력은 4 5 8 -1입니다. 각 숫자는 별도입니다. 마이너스 값을 입력하면 프로그램이 멈추고 마이너스 번호와 마이너스 숫자가 인쇄 될 것입니다. 빼기 숫자가 인쇄되지 않은 후에 –

+0

"12 + 34-56yz"는 무엇을 인쇄해야합니까? 또는 "12_34yz"입니까? – chux

답변

2

isdigit(x)'-'에 해당하지 않으므로 별도로 테스트해야합니다.

첫 번째 음수 뒤에 멈추고 싶으므로 -을 읽을 때 플래그를 설정해야 다른 음수를 계속 읽지 않아도됩니다. 이것에 대해

int neg = 0; 
char x = getchar(); 
while (isdigit(x) || x == '-') { 
    if (x == '-') { 
     neg = 1; 
    } else { 
     int a = x - '0'; 
     if (neg) { 
      a = -a; 
     } 
     printf("%d", a); 
     if (neg) { 
      break; 
     } 
    x = getchar(); 
} 
+0

그것은 작동하지 않습니다. 내 입력 452-1 때, 내 outout 4 5 2 -3 1, 내 테스트에, 내 출력에 항상 -3 : –

+0

그것은 부정적인 후 첫 번째 번호 후 루프 밖으로 나간다 그것을 변경했습니다. – Barmar

+0

감사합니다. 가장 좋은 –

0

getchar() 한 번에 하나의 문자를 읽어 사용했다. '5', '4', '2', '-'가 표시됩니다.

isdigit(x)은 '-'에 대해 작동하지 않으므로 루프가 종료됩니다.

0

무엇 :

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    char x = getchar(); 
    int a; 
    while (x != '\n') 
    { 
     if (isdigit(x)) 
     { 
      a = x - '0'; 
      printf("%d,", a); 
     } 
     else 
      printf("%c", x); 

     x = getchar(); 
    } 

    printf("\n"); 

    return 0; 

}

+0

@ SefaTaşcan : 답이 마음에 들면, 같은 문제가있는 다른 사용자의 경우 대답을 좋아하고 동의 한 것으로 태그를 지정하십시오. – user7140484