이 글에서는 strcpy() 함수를 사용하지 않고 한 문자열을 다른 문자열로 복사하는 방법을 알아보겠습니다. 일반적으로는 strcpy()와 동일하게 동작하는 자체 함수를 직접 작성하여 문제를 해결할 수 있지만, 여기서는 약간의 트릭을 활용해 보겠습니다. 바로 다른 라이브러리 함수를 이용해 문자열을 복사하는 것입니다.
sprintf() 함수를 활용한 복사 원리
핵심 아이디어는 매우 간단합니다. sprintf() 함수를 사용하는 것입니다. sprintf()는 값을 출력할 때 콘솔이 아닌 문자열에 기록하는 함수입니다. 이것이 printf()와 sprintf()의 유일한 차이점입니다. sprintf()의 첫 번째 인자는 데이터를 저장하고자 하는 문자열 버퍼입니다.
입력 − "Hello World"라는 문자열 하나를 받습니다.
출력 − 해당 문자열을 다른 문자열에 복사합니다. → "Hello World"
알고리즘
1단계: 문자열을 입력받는다
2단계: 결과를 저장할 빈 문자열 버퍼를 생성한다
3단계: sprintf()를 사용하여 문자열을 복사한다
4단계: 종료한다
예제 코드
#include<stdio.h>
main() {
char str[50]; // 다른 문자열을 저장할 빈 문자열 생성
char *myString = "Program to copy a String";
sprintf(str, "%s", myString); // sprintf를 사용해 myString의 내용을 str로 복사
printf("The String is: %s", str);
}
실행 결과
The String is: Program to copy a String
위 예제에서 sprintf()는 myString이 가리키는 문자열을 서식 지정자 %s를 통해 str 배열에 그대로 기록합니다. 이처럼 sprintf()를 활용하면 strcpy()를 호출하지 않고도 손쉽게 문자열을 복사할 수 있습니다.