Sunday, September 03, 2006
[C언어] 문자열을 숫자(정수 int long; 실수 double)로 변환하는 함수
컴퓨터에서는 같은 1234 라고 해도, 문자열로서의 1234 일 수도 있고, 진짜 숫자로서의 1234 일 수도 있습니다.
문자로서의 숫자를, 진짜 숫자로 바꾸어서 연산을 할 수 있게 해주는 함수들입니다.
문자로 된 숫자를, 진짜 숫자의 정수로 변환
실행 결과:
문자 = 1234.9999
숫자(int) = 1234
만약 문자열에 소수점이 있다면 반올림하지 않고 소수점 이하를 무조건 무시합니다. 에러가 난다면 0을 반환합니다.
그래서 위의 소스가 만약 char *s = "ABCD"; 이렇게 되었다면 "숫자(int) = 0" 으로 출력됩니다.
atoi() 함수는 stdlib.h 에 정의되어 있습니다.
int 가 아닌 long형 정수로 변환할 때는 atol()을 사용합니다.
실행 결과:
문자열 = 98765432
숫자(long) = 98765432
문자로 된 숫자를, 진짜 숫자의 실수로 변환
실행 결과:
문자열 = 12345.67
실수(double) = 12345.670
atof() 함수는 double형 실수를 반환합니다. 그래서 이것을 float형 실수로 받으면
warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
이런 경고가 나오게 됩니다.
▶▶ [C언어] 숫자(정수;int, long, unsigned long)를 문자열로 변환하는 함수 - itoa()
▶▶ [C언어] 숫자(실수;float)를 문자열로 변환하는 함수 - sprintf()
16진수 문자열을 숫자로 변환: ▶▶ C언어] 헥사(HEX; 16진수) 문자열을, 10진수 정수 숫자로 변환 함수; Hex String to Int Number
2진수 문자열을 숫자로 변환: ▶▶ C언어] 2진수 문자열을, 10진수 정수 숫자로 변환 함수; Base-2 String to Int Number
문자로서의 숫자를, 진짜 숫자로 바꾸어서 연산을 할 수 있게 해주는 함수들입니다.
atoi() : String To int
문자로 된 숫자를, 진짜 숫자의 정수로 변환
#include <stdio.h>
#include <stdlib.h>
int main() {
int num;
char *s = "1234.9999";
num = atoi(s);
printf("문자 = %s\n숫자(int) = %d\n", s, num);
return 0;
}
#include <stdlib.h>
int main() {
int num;
char *s = "1234.9999";
num = atoi(s);
printf("문자 = %s\n숫자(int) = %d\n", s, num);
return 0;
}
실행 결과:
문자 = 1234.9999
숫자(int) = 1234
만약 문자열에 소수점이 있다면 반올림하지 않고 소수점 이하를 무조건 무시합니다. 에러가 난다면 0을 반환합니다.
그래서 위의 소스가 만약 char *s = "ABCD"; 이렇게 되었다면 "숫자(int) = 0" 으로 출력됩니다.
atoi() 함수는 stdlib.h 에 정의되어 있습니다.
atol() : String To long
int 가 아닌 long형 정수로 변환할 때는 atol()을 사용합니다.
#include <stdio.h>
#include <stdlib.h>
int main() {
long num;
char *s = "98765432";
num = atol(s);
printf("문자열 = %s\n숫자(long) = %ld\n", s, num);
return 0;
}
#include <stdlib.h>
int main() {
long num;
char *s = "98765432";
num = atol(s);
printf("문자열 = %s\n숫자(long) = %ld\n", s, num);
return 0;
}
실행 결과:
문자열 = 98765432
숫자(long) = 98765432
atof() : String To double
문자로 된 숫자를, 진짜 숫자의 실수로 변환
#include <stdio.h>
#include <stdlib.h>
int main() {
double f;
char *s = "12345.67";
f = atof(s);
printf("문자열 = %s\n실수(double) = %0.3f\n", s, f);
return 0;
}
#include <stdlib.h>
int main() {
double f;
char *s = "12345.67";
f = atof(s);
printf("문자열 = %s\n실수(double) = %0.3f\n", s, f);
return 0;
}
실행 결과:
문자열 = 12345.67
실수(double) = 12345.670
atof() 함수는 double형 실수를 반환합니다. 그래서 이것을 float형 실수로 받으면
warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
이런 경고가 나오게 됩니다.
▶▶ [C언어] 숫자(정수;int, long, unsigned long)를 문자열로 변환하는 함수 - itoa()
▶▶ [C언어] 숫자(실수;float)를 문자열로 변환하는 함수 - sprintf()
16진수 문자열을 숫자로 변환: ▶▶ C언어] 헥사(HEX; 16진수) 문자열을, 10진수 정수 숫자로 변환 함수; Hex String to Int Number
2진수 문자열을 숫자로 변환: ▶▶ C언어] 2진수 문자열을, 10진수 정수 숫자로 변환 함수; Base-2 String to Int Number
tag: cpp
C언어 | C/C++ (Visual C++)
만약에 음수도 받고 싶다면 어떻게 해야 될까요?
음수도 기본적으로 지원됩니다.
가령
char *s = "1234.9999";
를
char *s = "-1234.9999";
이렇게 하시면
아래와 같이, "마이너스 부호 붙은 문자열"이
"진짜 음수"로 변환되어 출력됩니다
문자 = -1234.9999
숫자(int) = -1234
<< Home