[Code Up] (1079) scanf의 ‘%c’로 char문자를 받을 때 주의할 사항
카테고리: CodeUp
태그: Coding Test Algorithm
C/C++로 풀이했습니다.
출처 : Code Up 문제 풀이. https://codeup.kr/
문제 출처 https://codeup.kr/problem.php?id=1079
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
char c;
while(1)
{
scanf(" %c", &c);
printf("%c\n", c);
if (c == 'q') break;
}
}
scanf("%c")
char 문자 1 개를 받을 경우, 이%c
는 특별하게 공백 문자, 개행 문자도 저장할 수 있다.
따라서 공백을 무시하기 위해서는 scanf("%d %d")
처럼 scanf(" %c")
라고 앞에 공백을 써주는 것이 좋다. 왜냐하면 scanf가 %c
로 char 한 문자를 받을 때는 공백과 개행문자도 저장이 가능하여 읽어들이기 때문이다. 따라서 앞에 공백을 넣어 “공백 + 문자” 이런 입력 형식으로서, 공백은 공백 자리에 매치 되어 %c에 저장되지 않고 무시되도록 하고, 진짜 문자는 문자 자리에 매치될 수 있도록 해야 한다. 이렇게 scanf 가 %c
로 읽어들이는 경우 입력 버퍼를 비우거나 공백이 필요하지 않다면 공백을 어떻게 무시할지에 관한 생각을 꼭 해두어야 한다.
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
char c;
while(1)
{
scanf("%c", &c);
if (c == ' ') continue;
printf("%c\n", c);
if (c == 'q') break;
}
}
이건 내 풀이였는데, 이렇게 할 필요 없이 그냥 " %c"
로 앞에 공백을 주면 됐었다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기