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)하는 방식이 자주 사용됩니다.

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

strlen 함수

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

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

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

알고리즘 구현

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

포인터 초기 위치

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


동작 과정

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

초기 상태

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

1회차: A와 H 교환

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

2회차: B와 G 교환

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

3회차: C와 F 교환

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

4회차: D와 E 교환

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

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

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

시험 문제 분석

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

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

뒤집은 후 str = "HGFEDCBA":

인덱스01234567
HGFEDCBA

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


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