c
  • while-loop
  • choice
  • 2014-02-06 3 views 1 likes 
    1

    끝에 'y'를 입력하는 동안 "OK"로 프로그램을 인쇄하려고합니다.하지만 루핑되지 않고 그냥 "OK"를 출력하고 종료합니다 마지막에 'y'를 입력하더라도 프로그램. 도와주세요. 당신이 다음 개행 문자 \ny와 함께 입력에 전달 Enter 키를 눌러 첫 번째 반복에프로그램이 루핑되지 않습니다

    #include <stdio.h> 
    int main() 
    { 
        char c = 'y'; 
        while (c == 'y') 
        { 
         printf_s("OK\n"); 
         scanf_s("%c", &c); 
         if (c != 'y') 
         { 
          break; 
         } 
        } 
        return 0; 
    } 
    
    +0

    내 질문에 편집 됨 – mib1413456

    +2

    windowsfiref 이전에 ['fflush (stdin)'] (http://msdn.microsoft.com/en-us/library/9yky46tz.aspx)를 사용하십시오 –

    +1

    [scanf_s' 참조] (http://msdn.microsoft.com/en-us/library/w40768et.aspx)를 확인하십시오. –

    답변

    4

    . 두 번째 반복시 scanf_s\n입니다.

    scanf_s(" %c", &c); 
         ^Notice the space before %c 
    

    scanf_s("%c", &c); 
    

    변경 %c 지정자 앞에 공백은 공백 문자의 수를 소모 할 수 있습니다.

    +0

    나는 당신의 방법을 시도했지만 작동하지 않습니다. – mib1413456

    +2

    'scanf_s' 메쏘드는 모든 저장 위치가 명시적인 크기를 따라야 함을 요구합니다. – JaredPar

    -1

    공백을 건너 뛰려면 %c 앞에 공백을 넣으십시오. 이 추가 매개 변수는 c 인수의 크기를 지정한다

    scanf_s("%c", &c, 1); 
    

    다음과 같이

    2
    scanf_s 줄을 변경

    . 일반 오래된 scanf이 인수가 필요하지 않습니다하지만 while 루프의 조건을 효과적으로 같은 일을하기 때문에 _s로 끝나는 버전은

    는 또한 break 문으로 if 블록이 불필요 할.

    while (c == 'y') 
    { 
        printf_s("OK\n"); 
        scanf_s("%c", &c, 1); 
    } 
    
    0

    당신은 scanf와

    이 같이 사용하는 경우 u는 그것이 작동 볼 문제입니다 ..

     #include <stdio.h> 
    
    int main() 
    { 
        int c = 1; 
        while (c == 1) 
        { 
         printf_s("OK\n"); 
         scanf_s("%d", &c); 
         if (c != 1) 
         { 
          printf_s("hello\n"); 
           continue; 
         } 
    
        } 
        return 0; 
    } 
    
    +0

    그는 scanf에 "틀린"것이 아닙니다. 캐릭터를 스캔 할 수 있습니다. – MrHappyAsthma

    +0

    나는 "scanf가 문자를 읽을 수 없다"고 말하지 않았다. – goGud

    +0

    그는 scanf_s를 사용하여 문자를 스캔하고있었습니다. int로 변경해도 필요한 세 번째 매개 변수가없는 scanf_s로 문제를 해결하는 데 도움이되지 않습니다. 그는 "당신이 scanf에 잘못되었습니다"라고 말하지 않았습니다. – MrHappyAsthma

    0

    확인 내가 scanf_s 대신 scanf와를 사용하여 다음과 같이이 기록 될 수있다 그 문제를 해결, 모두에게 감사드립니다.

    +0

    만약 당신이 htis API의 사용법을 정정하기 때문에'scanf_s'를 계속 사용하고 싶다면 제 대답을보십시오 – JaredPar

     관련 문제

    • 관련 문제 없음^_^