이번에는 정수를 문자열 형태로 변환하는 방법입니다. sprintf 함수를 사용하면 정수를 문자열로 변환할 수 있습니다(stdio.h 헤더 파일에 선언되어 있습니다).
- sprintf(문자열, "%d", 정수);
- sprintf(문자열, "%x", 정수);
- sprintf(문자열, "%X", 정수);
다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
#define _CRT_SECURE_NO_WARNINGS // sprintf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h> // sprintf 함수가 선언된 헤더 파일
int main()
{
char s1[10]; // 변환한 문자열을 저장할 배열
int num1 = 283; // 283은 정수
sprintf(s1, "%d", num1); // %d를 지정하여 정수를 문자열로 저장
printf("%s\n", s1); // 283
return 0;
}
283
먼저 변환한 문자열을 저장할 배열을 선언합니다(동적 메모리를 할당해도 됩니다). 그리고 sprintf 함수에 서식 지정자로 %d를 설정한 뒤 정수를 문자열로 저장합니다.
앞에서 문자열을 정수로 변환하는 atoi 함수가 있었습니다. 물론 반대로 변환하는 itoa같은 함수도 있지만 C 언어 표준 함수는 아닙니다(Visual Studio에서 _itoa로 사용 가능). 따라서 이 책에서는 표준 함수인 sprintf를 사용하였습니다.
정수를 16진법으로 표기된 문자열로 변환하려면 어떻게 해야 할까요? 이때는 서식 지정자로 %x를 사용하면 됩니다.
#define _CRT_SECURE_NO_WARNINGS // sprintf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h> // sprintf 함수가 선언된 헤더 파일
int main()
{
char s1[10]; // 변환한 문자열을 저장할 배열
int num1 = 283; // 283은 정수
sprintf(s1, "0x%x", num1); // %x를 지정하여 정수를 16진법으로 표기된 문자열로 저장
// 16진수라는 것을 나타내기 위해 앞에 0x를 붙임
printf("%s\n", s1); // 0x11b
return 0;
}
0x11b
sprintf 함수에 서식 지정자로 %x를 지정하면 정수를 16진법으로 표기된 문자열로 변환할 수 있습니다. 이때 16진수라는 것을 명확하게 나타나기 위해 앞에 "0x" 문자열을 붙여줍니다. 단, "0x"를 붙이지 않아도 상관은 없지만 10진수 100과 알파벳이 섞여 있지 않은 16진수 100은 헷갈리기 쉽습니다.
만약 sprintf(s1, "0x%X", num1);와 같이 서식 지정자를 %X로 지정하면 16진수의 알파벳 부분이 대문자로 저장됩니다.
0x11B
'잡동사니' 카테고리의 다른 글
8비트 MCU 또는 32비트 MCU 선택 기준 (0) | 2019.10.09 |
---|---|
구조체와 const에 관하여 (0) | 2019.07.18 |
#ifndef ~ #endif (0) | 2019.06.20 |
메모리 영역(code, data, stack, heap) (0) | 2019.06.20 |
MY PC에서 ROS MASTER를 통해 ethernet 연결된 Device로 접근하는 법 (0) | 2019.05.03 |