1
2
3
4
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//소문자를 대문자로 변경하는 알고리즘
|
cs |
아래의 코드는 소문자를 대문자로 변경하는 알고리즘을 while 문에서
continue 와 break 를 이용해서 구하는 간단한 코드이다
1
2
3
4
5
6
7
|
int main(void)
{
char letter;
while (1)
{
printf("소문자를 입력하시오:(그만하려면 Q를 입력하시오)");
scanf(" %c", &letter);
|
cs |
여기서 주목해야 할 부분은 scanf(" %c", &letter); 에서 공백이 있는 부분이다
반복문에서 문자상수를 입력할 때는 (문자) (엔터키) 를 입력하기 때문에
엔터키 처리를 해줘야 한다
공백을 두어 엔터키를 처리하도록 하는 것이다
1
2
3
4
5
6
7
8
9
10
|
if (letter == 'Q')
break;
if (letter < 'a' || letter >'z')
continue;
letter = 'A' + (letter - 'a');
printf("변환된 대문자는 %c 입니다.\n", letter);
}
return 0;
}
|
cs |
위 코드를 전체적으로 실행하게 되면 아래와 같이 실행된다
만만약 공백을 추가하지 않으면 아래와 같은 실행화면이 나온다
이러한 실행화면이 나오는 이유는 다음과 같다
입력버퍼에 들어온 것을 scanf()함수가 가져가는데,
처음에는 \n 전까지의 값을 가져가지만
입력버퍼에 \n가 그대로 있어
두 번째 while문이 실행될 때, \n값이 scanf()의 char 변수에 담기게 된다
따라서 두 번째 while문이 실행될 때, 입력버퍼에 있던 \n값이 char 변수에 담기게 되고
continue에 걸리게 되어 세 번째 while문이 실행되는 것이다
이를 방지하기 위해서는 scanf(" %c", letter); %앞에 공백을 놓는 방법이 있다
근데 찾아보니 %*c , getchar()함수를 사용하는 등 여러 방법이 있어 나중에 알아봐야겠다
아으
'python' 카테고리의 다른 글
문자열 관련 함수 정리 (0) | 2023.06.24 |
---|---|
팰린드롬 문제(ex. level) (0) | 2022.07.05 |
scanf()의 반환값 (0) | 2022.07.02 |
완전수 구하기 (0) | 2022.07.02 |
캐치강연-it산업 (0) | 2022.01.21 |