백준 1406번 에디터 문제를 풀 때, 입력한 문자가 P일 때, 문자를 하나 더 받아야 되었다.
입력 양식은 다음과 같다.
백준 1406 에디터 문제 입력 예시
P 입력할문자
ex)P K
일반화를 한다면
'특정 문자' '입력할 문자'
를 명령프롬프트에 쓴다.
P를 입력하면 문자를 하나 더 받는 코드는 다음과 같다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char c1;
char c2;
printf("문자를 입력하세요: ");
scanf("%c", &c1); // 문자를 입력받아서 변수에 저장
if (c1 == 'P') //일반화)c1=='특정문자'
{
scanf(" %c", &c2); //%c 앞에 공백을 포함해야된다. 특정문자 다음 스페이스와 c2를 둘 다 인식해야 되기 때문
printf("%c AND %c\n", c1, c2);
}
else
printf("%c\n", c1); //특정문자를 입력하지 않았을 때는 입력한 문자 하나만 나오게 한다.
return 0;
}
중요한 부분은 scanf(" %c", &c2); //%c 앞에 공백을 포함해야된다. 특정문자 다음 스페이스와 c2를 둘 다 인식해야 되기 때문
입력 양식에서 P(또는 특정 문자) 다음에 띄어쓰기를 포함하므로, %c 바로 앞에 공백을 안 넣어주면 아래의 사진과 같은 오류가 난다.
if(c1=='P')
{
char ch2;
scanf("%c", ch2); //%c 바로 앞에 공백을 안 넣어준 상황
}
C언어) 입력 버퍼 비울 때, getchar() 사용 시 유의사항 (0) | 2022.07.14 |
---|---|
c언어 mistake_출력형식 (0) | 2022.07.01 |
2차원 배열로 문자열 받기(동적할당x) (0) | 2022.07.01 |
댓글 영역