C언어 문자열 뒤집기 (포인터 활용)
코딩C언어
읽는데 3분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-03
조회수: 15
요약
C언어에서 포인터 두 개를 활용해 문자열을 뒤집는 알고리즘을 알아봅니다. 정보처리기사 실기에 출제된 양 끝에서 가운데로 이동하며 swap하는 방식을 정리합니다.
문자열 뒤집기 핵심 정리
| 개념 | 설명 | 예시 |
|---|---|---|
| 두 포인터 | 양 끝에서 시작하여 가운데로 이동 | p1 = str, p2 = str + len - 1 |
| swap | 두 포인터가 가리키는 값을 교환 | t = *p1; *p1 = *p2; *p2 = t; |
| 종료 조건 | 두 포인터가 만나거나 교차할 때 | while(p1 < p2) |
문자열 뒤집기란?
문자열 뒤집기 개념을 몰라도 문제는 풀 수 있습니다
문자열 뒤집기(String Reverse) 는 문자열의 순서를 거꾸로 바꾸는 알고리즘입니다.
text
코드 하이라이팅 중...
C언어에서는 포인터 두 개를 사용해 양 끝에서 시작하여 가운데로 이동하며 값을 교환(swap)하는 방식이 자주 사용됩니다.

strlen 함수
strlen()은 문자열의 길이를 반환하는 표준 라이브러리 함수입니다. 널 문자('\0')는 포함하지 않습니다.
사용하려면 #include <string.h>를 작성해야 합니다.
c
코드 하이라이팅 중...
| 문자열 | strlen 결과 |
|---|---|
"HELLO" | 5 |
"ABCDEFGH" | 8 |
"" (빈 문자열) | 0 |
알고리즘 구현
c
코드 하이라이팅 중...
포인터 초기 위치
c
코드 하이라이팅 중...
| 변수 | 가리키는 위치 | 값 |
|---|---|---|
p1 | str + 0 (= &str[0]) | 'A' |
p2 | str + 7 (= &str[7]) | 'H' |
str + len - 1이 마지막 문자인 이유
문자열 길이가 8이면 인덱스는 0부터 7까지입니다. str + 8은 널 문자 위치이고, str + 7이 마지막 문자 위치입니다.
동작 과정
"ABCDEFGH"를 뒤집는 과정을 단계별로 살펴봅니다.
초기 상태
text
코드 하이라이팅 중...
1회차: A와 H 교환
c
코드 하이라이팅 중...
text
코드 하이라이팅 중...
2회차: B와 G 교환
text
코드 하이라이팅 중...
3회차: C와 F 교환
text
코드 하이라이팅 중...
4회차: D와 E 교환
text
코드 하이라이팅 중...
p1 < p2 조건이 거짓이 되어 루프 종료.

시험 문제 분석
24년 1회 문제에서는 뒤집은 후 홀수 인덱스만 출력합니다.
c
코드 하이라이팅 중...
뒤집은 후 str = "HGFEDCBA":
| 인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 값 | H | G | F | E | D | C | B | A |
i = 1, 3, 5, 7일 때 출력하므로 결과는 GECA입니다.