C 언어 | scanf 오류가 납니다.


  • Level 2

    scanf("%c", &ch);

    이런 식으로 하면 문자를 입력하고 넘어가야 하는데 공백이 입력된 것으로 처리됩니다.
    또한 반복문일 때 한 번 입력하면 입력은 되는데 2번째에 공백처리가 되는 경우도 있습니다.

    adfjkjdfkjf.JPG

    이 이미지대로라면 반복문의 끝에 문자 입력 한 번을 하면 다시 돌아가서 문자 입력을 또 해야 하는데 y 한 번 입력하면 아래처럼 2번이 되면서 첫번째는 제대로 되는데 두 번째는 자동으로 공백 입력 처리가 됩니다.

  • Level 2

    @po개발자wer 님이 C 언어 | scanf 오류가 납니다. 에서 보낸 메세지:

    ch = getchar();
    while (getchar() != '\n') {}

    알려주신 코드는 했더니 원래 종료 조건을 만족시켜도 제대로 되지가 않아 scanf_s를 썼습니다.
    scanf_s("%c", &ch, sizeof(ch));
    를 해서 했더니 비주얼 스튜디오에서는 되지만 구름 ide는 안 돼서 %c 앞에 스페이스바로 빈칸을 넣어줬더니 됐는데 이것도 문제가 없을까요?

  • Level 7

    입력을 받을때 개행문자('\n')가 포함되어서 그런 현상이 나타나는것 같습니다.
    개행문자를 제거하는 다양한 방법이 있지만 그 중 하나를 알려드리자면..

    기존

    scanf("%c", &ch)
    

    대신

    ch = getchar();
    while (getchar() != '\n') {}
    

    위 코드를 사용하면 됩니다.

    혹은 scanf_s로 원하는 바이트만큼만 받는 방법도 있습니다.

ONLINE USERS

POPULAR TOPICS

SUGGESTED TOPICS

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 1