티스토리 뷰
1. 개요
이 문제는 백준 알고리즘 4344번을 풀면서 겪은 문제이다. 문제를 풀기 위해선 '%' 문자를 cmd창을 활용하여 출력해야 했는데, printf("") 함수 안에 %을 넣는 방식으로는 출력되지 않았다. 다음은 자세한 설명이다.
2. 문제
나는 cmd창에 40.000% 라는 문자열을 출력해야 했다. 그래서 다음과 같이 코드를 작성하였다.
#include <stdio.h>
int main(void) {
printf("40.000%");
return 0;
}
그러나 위와 같이 코드를 작성하면 다음과 같이 출력된다.
40.000
'%' 가 출력되지 않은 것이다. 그래서 내가 사용한 방법은 이스케이프 시퀀스 문자를 출력하고 싶을 때 사용하는 방법인, 앞에 \를 넣는 방법이다. 그래서 다음과 같이 코드를 짜봐았다.
#include <stdio.h>
int main(void) {
printf("40.000\%");
return 0;
}
그러나 이렇게 해도, 문제는 해결되지 않았다...... 마지막으로 내가 사용한 방법은 서식 지정자를 사용하는 것이었다. '%' 문자가 들어가야할 자리에 서식 지정자를 놓고, 그 서식 지정자의 값으로 '%'을 넣어주는 것이다. 다음은 내가 작성한 코드이다.
#include <stdio.h>
int main(void) {
printf("40.000%c",'%');
return 0;
}
이렇게 하니까, 다행이도 원하는 결과를 얻을 수 있었다. 내가 생긴 궁금증은 왜 %는 출력되지 않느냐 였다. 구글링을 통해 나름 자료를 찾아보았다. printf() 함수의 원형은 0개 이상의 지시문으로 구성되어 있는데, %를 제외한 일반 문자는 그대로 출력된다고 한다. 다시 말하면 %는 그대로 출력되지 않는것이다. 그리고 %이 출력되지 않아도, 아무 에러 메세지를 띄우지 않는다는 것이다. 위에 방법처럼 서식문자를 활용한 해결방안도 있지만 문법적으로 해결할 수 있는 방법도 있다. 다음은 문법적으로 '%'를 출력하는 방법이다.
#include <stdio.h>
int main(void) {
printf("40.000%%");
return 0;
}
위와 같이 '%' 문자 앞에 '%' 를 한번 더 써준다면, 출력할 수 있다. 결과만 정리하자면 다음과 같다.
printf() 함수에서 %를 출력하는 방법
1. 서식문자 활용
#include <stdio.h>
int main(void) {
printf("40.000%c",'%');
return 0;
}
2. %를 두번 사용
#include <stdio.h>
int main(void) {
printf("40.000%%");
return 0;
}
3. 결어
사실 이번에 올리는 글은 아쉬운 마음이 조금 있다. 왜냐하면 '%' 문자의 의미를 완벽하게 이해하지 못했기 때문이다. 그냥 'printf()안에서 %문자는 그대로 출력되지 않는다.' 라는 펙트만을 알아낸 것이기 때문이다. 추가적으로 이 부분을 보완한 글을 올릴 수 있으면 좋겠다.
'programming > 문제 해결' 카테고리의 다른 글
[C++] 문자열에서 정수, 실수, 문자 추출하기 - (stringstream) (0) | 2021.05.14 |
---|---|
[C언어, C++] 재귀함수 내에서 재귀호출을 두번 할때 주의점 (0) | 2020.07.24 |
[C언어, Python] 논리 연산자와 자주 발생하는 실수! (0) | 2020.06.29 |
[C언어, C++] 문자를 정수로 바꾸는 방법! (문자 정수 형변환) (1) | 2020.06.26 |
[C언어, C++] scanf() 문자 입력 문제 - 입력 버퍼 (0) | 2020.05.14 |
- Total
- Today
- Yesterday
- Programmers
- 문자열
- 백준
- 구현
- 백준알고리즘
- CJ 올리브네트웍스
- 후기
- 개발자
- 비트코인
- CJ
- Python
- 코딩
- spring
- 코테
- 안드로이드 스튜디오
- 기록지
- 자료구조
- XML
- 육군
- 안드로이드 프로그래밍
- c++
- CJ Olivenetworks
- C언어
- Spring Boot
- 알고리즘
- 코딩테스트
- 백준 알고리즘
- java
- BaekJoon
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |