본문 바로가기

C_study

[C] 코딩도장 46 : 문자열과 실수를 서로 변환하기

1. atoi, atof 

 

atoi 함수는 문자열을 정수로 바꿔주고, atof 함수는 실수로 바꿔준다.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* s1 = "12345";
    char* s2 = "0.3245";
    int num1; // 바뀐 수를 넣어줄 변수 선언
    float num2;

    num1 = atoi(s1); // atoi 함수를 사용해 정수로 변환해준다.
    num2 = atof(s2); // atof 함수를 사용해 실수로 변환해준다.

    printf("%d\n%0.4f", num1, num2);

    return 0;
}

2. strtol, strtof

 

strtol 함수는 문자열을 10진수나 16진수로 변환해주고, strtof 함수는 문자열을 실수로 변환해준다. 지수표기법으로 표시된 수 또한 가능하다.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* s1 = "0xaf10 16 0.6732";
    int num1, num2; // 문자열에서 잘라낸 부분을 저장할 변수
    float num3;
    char* end; // 이전 숫자의 끝 부분을 저장할 포인터

    num1 = strtol(s1, &end, 16); // 16진수면 16, 10진수면 10을 넣어준다.
    num2 = strtol(end, &end, 10);
    num3 = strtof(end, NULL); // 끝 부분에서는 NULL 값을 넣어준다.

    printf("0x%x\n%d\n%f", num1, num2, num3);

    return 0;
}

3. sprintf

 

sprintf 함수는 실수, 정수를 문자열로 변환해준다. 변수의 형태에 따라 괄호 안의 서식 지정자를 바꿔준다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()  
{
    char s1[30]; // 문자열을 저장해줄 배열
    int num1 = 30;

    sprintf(s1, "%d", num1); // 배열에 지정된 형식의 변수를 문자열 형태로 저장한다.
    
    printf("%s", s1);

    return 0;
}