이 글에서는 정수(integer)를 문자열(string)로 변환하는 방법을 살펴보겠습니다.
변환 로직은 매우 간단합니다. 핵심은 sprintf() 함수를 사용하는 것입니다. 이 함수는 값을 콘솔 화면에 출력하는 대신 문자열 버퍼에 저장한다는 점이 특징이며, 이것이 printf()와의 유일한 차이점입니다. 호출 시 첫 번째 인자로는 변환된 데이터를 저장할 문자열 버퍼를 전달합니다.
입력: 사용자가 숫자 값(예: 42)을 입력합니다.
출력: 프로그램은 해당 숫자의 문자열 형태인 "42"를 반환합니다.
알고리즘
1단계: 숫자를 인자로 받는다
2단계: 결과를 저장할 빈 문자열 버퍼를 생성한다
3단계: sprintf()를 사용해 숫자를 문자열로 변환한다
4단계: 종료한다
예제 코드
#include<stdio.h>
char* my_itoa(int number) {
static char str[20]; // 숫자를 저장할 문자열 버퍼 생성
sprintf(str, "%d", number); // sprintf()로 숫자를 문자열로 변환
return str;
}
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
printf("You have entered: %s", my_itoa(number));
return 0;
}
주의: 지역 변수 반환 문제
함수 내에서 선언된 일반 지역 배열은 함수가 종료되는 순간 소멸됩니다. 따라서 지역 배열의 주소를 그대로 반환하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있습니다. 이를 방지하려면 위 예제처럼 배열을 static으로 선언하거나, malloc()을 이용해 동적 메모리를 할당한 후 반환해야 안전합니다.
실행 결과
Enter a number: 56
You have entered: 56