C언어 문자열 뒤집기 (포인터 활용)

코딩C언어
읽는데 4분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-03-21
조회수: 113

요약

C언어에서 포인터 두 개를 활용해 문자열을 뒤집는 알고리즘을 알아봅니다. 정보처리기사 실기에 출제된 양 끝에서 가운데로 이동하며 swap하는 방식을 정리합니다.

문자열 뒤집기 핵심 정리

개념설명예시
두 포인터양 끝에서 시작하여 가운데로 이동p1 = str, p2 = str + len - 1
swap두 포인터가 가리키는 값을 교환t = *p1; *p1 = *p2; *p2 = t;
종료 조건두 포인터가 만나거나 교차할 때while(p1 < p2)

문자열 뒤집기란? 쌩기초

문자열 뒤집기(String Reverse) 는 문자열의 순서를 거꾸로 바꾸는 알고리즘입니다.

text
코드 하이라이팅 중...

C언어에서는 포인터 두 개를 사용해 양 끝에서 시작하여 가운데로 이동하며 값을 교환(swap)하는 방식이 자주 사용됩니다.

문자열 뒤집기 개념
p1은 앞에서, p2는 뒤에서 시작해서 서로 만날 때까지 값을 교환합니다.

strlen 함수 쌩기초

strlen()문자열의 길이를 반환하는 표준 라이브러리 함수입니다. 널 문자('\0')는 포함하지 않습니다.

사용하려면 #include <string.h>를 작성해야 합니다.

c
코드 하이라이팅 중...
문자열strlen 결과
"HELLO"5
"ABCDEFGH"8
"" (빈 문자열)0

알고리즘 구현 기초

코드에서 *p1은 "p1이 가리키는 칸의 값"이라는 뜻입니다. 포인터가 아직 익숙하지 않다면 먼저 읽고 오는 것을 추천합니다.

c
코드 하이라이팅 중...

포인터 초기 위치

c
코드 하이라이팅 중...
변수가리키는 위치
p1str + 0 (= &str[0])'A'
p2str + 7 (= &str[7])'H'


동작 과정 기초

"ABCDEFGH"를 뒤집는 과정을 단계별로 살펴봅니다.

초기 상태

text
코드 하이라이팅 중...

1회차: A와 H 교환

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

2회차: B와 G 교환

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

3회차: C와 F 교환

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

4회차: D와 E 교환

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

p1 < p2 조건이 거짓이 되어 루프 종료.

문자열 뒤집기 결과
뒤집기가 완료되면 ABCDEFGH가 HGFEDCBA로 바뀝니다.

시험 문제 분석 심화

24년 1회 문제에서는 뒤집은 후 홀수 인덱스 위치의 문자만 출력합니다.

c
코드 하이라이팅 중...

뒤집은 후 str = "HGFEDCBA":

인덱스01234567
출력 여부OOOO
HGFEDCBA

i = 1, 3, 5, 7일 때 출력하므로 결과는 GECA입니다.


정보처리기사 실기 대비 문제

관련 글

(34개)
제목태그시험
C언어 구조체 배열
C언어
-
C언어 구조체 포인터
C언어
-
C언어 함수 프로토타입
C언어
-