C 언어 | scanf 오류가 납니다.
-
scanf("%c", &ch);
이런 식으로 하면 문자를 입력하고 넘어가야 하는데 공백이 입력된 것으로 처리됩니다.
또한 반복문일 때 한 번 입력하면 입력은 되는데 2번째에 공백처리가 되는 경우도 있습니다.이 이미지대로라면 반복문의 끝에 문자 입력 한 번을 하면 다시 돌아가서 문자 입력을 또 해야 하는데 y 한 번 입력하면 아래처럼 2번이 되면서 첫번째는 제대로 되는데 두 번째는 자동으로 공백 입력 처리가 됩니다.
-
@po개발자wer 님이 C 언어 | scanf 오류가 납니다. 에서 보낸 메세지:
ch = getchar();
while (getchar() != '\n') {}알려주신 코드는 했더니 원래 종료 조건을 만족시켜도 제대로 되지가 않아 scanf_s를 썼습니다.
scanf_s("%c", &ch, sizeof(ch));
를 해서 했더니 비주얼 스튜디오에서는 되지만 구름 ide는 안 돼서 %c 앞에 스페이스바로 빈칸을 넣어줬더니 됐는데 이것도 문제가 없을까요? -
입력을 받을때 개행문자('\n')가 포함되어서 그런 현상이 나타나는것 같습니다.
개행문자를 제거하는 다양한 방법이 있지만 그 중 하나를 알려드리자면..기존
scanf("%c", &ch)
대신
ch = getchar(); while (getchar() != '\n') {}
위 코드를 사용하면 됩니다.
혹은 scanf_s로 원하는 바이트만큼만 받는 방법도 있습니다.
ONLINE USERS
POPULAR TOPICS
SUGGESTED TOPICS
-
여전히 서버오류가 납니다
구름IDE 관련 • • 나리