Scanf가 % c 문자를 스캔하지 않지만 명령문을 건너 뜁니다. 그 이유는 무엇입니까?

psrag anvesh

나는 switch case 문을 사용하여 프로그램을 작성하고 입력을 위해 문자를 요청했지만 콘솔 창에서 문자를 요청하지 않지만 완전히 건너 뜁니다

int main() 
{
    float a, b, ans;
    char opr;

    printf("\nGIVE THE VALUES OF THE TWO NUMBERS\n");
    scanf(" %f %f",&a,&b);


    printf("\nGIVE THE REQUIRED OPERATOR\n");   

    //no display(echo) on the screen
    //opr = getch();
    //displays on the screen
    //opr = getche();

    scanf("%c",&opr);

    switch(opr)
    {
        case '+' :
            ans = a+b;
            printf("%f", ans);
            break;          
        case '-' :
            ans = a-b;
            printf("%f", ans);
            break;          
        case '*' :
            ans = a*b;
            printf("%f", ans);
            break;          
        case '/' :
            ans = a/b;
            printf("%f", ans);
            break;
        case '%' :
            ans = (int)a % (int)b;
            printf("%f", ans);
            break;
        default :
            printf("\nGIVE A VALID OPRATOR\n");

    }

    system("pause");        
    return 0;

하지만 %c두 번째에 공백을 넣었을 때 scanf누군가가 내가 혼란스러워하는 공백에 대해 뭔가를 말하고있었습니다.

그는 두 번째는 말했다 scanf의 값을 취하고 \n문자로 그리고 내가 전에 공백을 넣으면 %c두 번째에 scanf아니라고 캐릭터와는 문자로 공간을 차지하지 않는 이유는 무엇입니까?

하지만이 프로그램 \n에서는 캐릭터를

int main() 
{
    char a;
    printf("\ngive a char\n");
    scanf("%c",&a);
    printf("%c",a);

    return 0;
}  

이것은 정말 혼란 스럽습니다. 어떤 것이 잘못되었는지 배우고 싶습니다.

비밀 유전자

다음 형식으로 scanf를 사용할 때마다 :

scanf("%c",&a); 

다음 반복에서 사용될 개행을 남깁니다. 당신이 언급 한 마지막 프로그램은 단지 하나의 "scanf"를 가지고 있습니다. 다른 scanf를 사용해보십시오. 같은 문제가 발생합니다.

따라서 공백을 피하려면 다음과 같이 작성해야합니다.

 scanf(" %c",&opr); 

형식 문자열 앞의 공백은 scanf에게 공백을 무시하도록 지시합니다. 또는 사용하는 것이 더 좋습니다

getchar();

모든 개행을 소비합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

scanf를 사용하여 문자열을 스캔하는 경우 이전 입력 버퍼가 저장되지 않는 이유는 무엇입니까?

분류에서Dev

scanf가 문자열 입력을 건너 뛰는 이유는 무엇입니까?

분류에서Dev

LIKE 문이지만 현재 게시물을 건너 뜁니다.

분류에서Dev

Lotus Notes에서 로그인 페이지를 건너 뜁니다.

분류에서Dev

캔버스의 TextOut이 상자 그리기 문자를 하나의 명령문에서 순차적으로 인쇄하지 않을 때 간격으로 연결하는 이유는 무엇입니까?

분류에서Dev

데이터 프레임 내 그룹에 순차적 카운터를 추가하지만 조건이 충족되면 증분을 건너 뜁니다.

분류에서Dev

csv를 읽지 만 문자열에서 이스케이프 된 쉼표를 건너 뜁니다.

분류에서Dev

RegEx가 문자열 내의 다음 세그먼트를 선택하지 않는 이유는 무엇입니까?

분류에서Dev

배열을 반복하고 쉼표로 구분 된 문자열에 내용을 추가하지만 최신 항목에서는 쉼표를 건너 뜁니다.

분류에서Dev

C 프로그램이 컴파일 및 실행되지만 실행시 무작위로 if-else 평가를 건너 뜁니다.

분류에서Dev

내 프로그램이 scanf 값을 자동으로 가정하고 프로그램이 자동으로 반복되고 다음 scanf를 건너 뛰는 이유는 무엇입니까?

분류에서Dev

이 find 명령이 ASCII가 아닌 문자 만 포함하는 파일 이름을 반환하지 않는 이유는 무엇입니까?

분류에서Dev

스캐너는 사용자가 입력 한 정수를 취한 다음 문자열 배열을 취하지 만 입력 된 첫 번째 문자열을 건너 뜁니다.

분류에서Dev

RegEx 금지 된 단어가있는 경우 문자열의 마지막 부분을 건너 뜁니다.

분류에서Dev

생성 된 이미지가 픽셀을 건너 뜁니다.

분류에서Dev

생성 된 이미지가 픽셀을 건너 뜁니다.

분류에서Dev

개행 문자를 사용할 때 scanf while 루프가 종료되지 않는 이유는 무엇입니까?

분류에서Dev

scanf를 건너 뜁니다 (?)

분류에서Dev

Android 캔버스에 그리기가 내 비트 맵을 수정하지 않는 이유는 무엇입니까?

분류에서Dev

함수는 사용자 입력을받지 않고 getline을 건너 뜁니다.

분류에서Dev

내 로그가 이상한 문자를 너무 많이 인쇄하고 함수의 출력을 엉망으로 만드는 이유는 무엇입니까?

분류에서Dev

문자열 반전-출력에서 마지막 문자를 건너 뜁니다.

분류에서Dev

내 C 프로그램이 특수 문자를 감지하지 못하는 이유는 무엇입니까?

분류에서Dev

파일을 복사하지만 오류를 건너 뜁니다.

분류에서Dev

파일을 복사하지만 오류를 건너 뜁니다.

분류에서Dev

내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 프로그램은 테스트 케이스 수 = 1을 받으면 종료됩니다. 그렇지 않으면 정답을 제공하지만 마지막 테스트 케이스를 건너 뜁니다.

분류에서Dev

필드 데이터가 변경되지 않은 경우 WTForms는 유효성 검사를 건너 뜁니다.

Related 관련 기사

  1. 1

    scanf를 사용하여 문자열을 스캔하는 경우 이전 입력 버퍼가 저장되지 않는 이유는 무엇입니까?

  2. 2

    scanf가 문자열 입력을 건너 뛰는 이유는 무엇입니까?

  3. 3

    LIKE 문이지만 현재 게시물을 건너 뜁니다.

  4. 4

    Lotus Notes에서 로그인 페이지를 건너 뜁니다.

  5. 5

    캔버스의 TextOut이 상자 그리기 문자를 하나의 명령문에서 순차적으로 인쇄하지 않을 때 간격으로 연결하는 이유는 무엇입니까?

  6. 6

    데이터 프레임 내 그룹에 순차적 카운터를 추가하지만 조건이 충족되면 증분을 건너 뜁니다.

  7. 7

    csv를 읽지 만 문자열에서 이스케이프 된 쉼표를 건너 뜁니다.

  8. 8

    RegEx가 문자열 내의 다음 세그먼트를 선택하지 않는 이유는 무엇입니까?

  9. 9

    배열을 반복하고 쉼표로 구분 된 문자열에 내용을 추가하지만 최신 항목에서는 쉼표를 건너 뜁니다.

  10. 10

    C 프로그램이 컴파일 및 실행되지만 실행시 무작위로 if-else 평가를 건너 뜁니다.

  11. 11

    내 프로그램이 scanf 값을 자동으로 가정하고 프로그램이 자동으로 반복되고 다음 scanf를 건너 뛰는 이유는 무엇입니까?

  12. 12

    이 find 명령이 ASCII가 아닌 문자 만 포함하는 파일 이름을 반환하지 않는 이유는 무엇입니까?

  13. 13

    스캐너는 사용자가 입력 한 정수를 취한 다음 문자열 배열을 취하지 만 입력 된 첫 번째 문자열을 건너 뜁니다.

  14. 14

    RegEx 금지 된 단어가있는 경우 문자열의 마지막 부분을 건너 뜁니다.

  15. 15

    생성 된 이미지가 픽셀을 건너 뜁니다.

  16. 16

    생성 된 이미지가 픽셀을 건너 뜁니다.

  17. 17

    개행 문자를 사용할 때 scanf while 루프가 종료되지 않는 이유는 무엇입니까?

  18. 18

    scanf를 건너 뜁니다 (?)

  19. 19

    Android 캔버스에 그리기가 내 비트 맵을 수정하지 않는 이유는 무엇입니까?

  20. 20

    함수는 사용자 입력을받지 않고 getline을 건너 뜁니다.

  21. 21

    내 로그가 이상한 문자를 너무 많이 인쇄하고 함수의 출력을 엉망으로 만드는 이유는 무엇입니까?

  22. 22

    문자열 반전-출력에서 마지막 문자를 건너 뜁니다.

  23. 23

    내 C 프로그램이 특수 문자를 감지하지 못하는 이유는 무엇입니까?

  24. 24

    파일을 복사하지만 오류를 건너 뜁니다.

  25. 25

    파일을 복사하지만 오류를 건너 뜁니다.

  26. 26

    내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

  27. 27

    내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

  28. 28

    내 프로그램은 테스트 케이스 수 = 1을 받으면 종료됩니다. 그렇지 않으면 정답을 제공하지만 마지막 테스트 케이스를 건너 뜁니다.

  29. 29

    필드 데이터가 변경되지 않은 경우 WTForms는 유효성 검사를 건너 뜁니다.

뜨겁다태그

보관