C언어 포인터를 이용한 문자열 복사

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

요약

C언어에서 포인터를 이용해 문자열을 복사하는 방법을 알아봅니다. strcpy 함수의 원리와 포인터 증가 연산을 이해하고, 정보처리기사 실기에 출제되는 문자열 복사 문제를 풀어봅니다.

문자열 복사 핵심 정리

개념설명예시
문자열 복사원본 문자열을 대상 배열에 복사strcpy(dest, src)
포인터 증가다음 문자 위치로 이동s++, d++
복사 종료 조건널 문자('\0')를 만나면 종료while(*s)
const char*가리키는 값을 수정할 수 없는 포인터const char *s

문자열 복사란?

문자열 복사는 원본 문자열의 내용을 다른 문자 배열에 그대로 옮기는 것입니다.

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

표준 라이브러리의 strcpy 함수가 이 역할을 하지만, 시험에서는 포인터를 이용해 직접 구현한 복사 함수가 자주 출제됩니다.


포인터를 이용한 문자열 복사 함수

기본 구조

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

매개변수 설명

매개변수의미역할
char *d대상(destination) 포인터복사받을 배열의 시작 주소
const char *s원본(source) 포인터복사할 문자열의 시작 주소
문자열 복사 개념
포인터 s는 원본(src)을, d는 대상(dest)을 가리킵니다. s와 d가 한 칸씩 이동하면서 문자를 복사합니다.


동작 과정

예시 코드

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

복사 전 상태

인덱스012345678910
str1'f''i''r''s''t''\0'
str2't''e''s''t''s''t''r''i''n''g''\0'

단계별 동작

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

복사 후 상태

인덱스0123456...
str2'f''i''r''s''t''\0''r'...

복사 후 str2의 유효한 문자열"first"입니다. 인덱스 5에 널 문자가 삽입되어 이후의 문자들은 무시됩니다.

문자열 복사 과정
포인터 s와 d가 한 칸씩 이동하면서 문자를 복사합니다. 널 문자를 만나면 종료합니다.

while(*s)의 의미

while(*s)는 "s가 가리키는 값이 0이 아닌 동안" 반복합니다.

  • 널 문자 '\0'ASCII 코드는 0입니다
  • *s'\0'이면 조건이 거짓(0)이 되어 루프가 종료됩니다
c
코드 하이라이팅 중...

이 패턴은 문자열 처리에서 매우 자주 사용됩니다. 문자열 길이 계산이나 문자열 뒤집기에서도 동일한 원리를 사용합니다.


문자열 복사 후 길이 계산

복사된 문자열의 길이를 계산하는 패턴도 자주 출제됩니다.

c
코드 하이라이팅 중...
반복istr2[i]result
10'f'0 + 0 = 0
21'i'0 + 1 = 1
32'r'1 + 2 = 3
43's'3 + 3 = 6
54't'6 + 4 = 10
종료5'\0'-

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