고흐의 연구실/C언어와 C++
[C언어] 문자열을 수로 변환 atoi(), strtol(), atof(), strtof(), strtod()
전고흐
2020. 8. 9. 02:10
728x90
atoi()
- 10진법으로 표기된 문자열을 정수로 변환
- atoi(문자열);
- 헤더 : stdlib.h
- int atoi(char const *_String);
- 성공하면 변환된 정수를 반환, 실패하면 0을 반환
- 숫자가 아니어도 0을 반환
#include <stdio.h>
#include <stdlib.h> // atoi 함수가 선언된 헤더 파일
int main()
{
char *s1 = "283"; // "283"은 문자열
int num1;
num1 = atoi(s1); // 문자열을 정수로 변환하여 num1에 할당
printf("%d\n", num1); // 283
return 0;
}
strtol()
- 16진법으로 표기된 문자열을 정수로 변환
- strtol(문자열, 끝포인터, 진법);
- 헤더 : stdlib.h
- long strtol(char const *_String, char **_EndPtr, int _Radix);
- 성공하면 변환된 정수를 반환, 실패하면 0을 반환
#include <stdio.h>
#include <stdlib.h> // strtol 함수가 선언된 헤더 파일
int main()
{
char *s1 = "0xaf10"; // "0xaf10"은 문자열
int num1;
num1 = strtol(s1, NULL, 16); // 16진법으로 표기된 문자열을 정수로 변환
printf("%x %d\n", num1, num1); // af10 44816
return 0;
}
#include <stdio.h>
#include <stdlib.h> // strtol 함수가 선언된 헤더 파일
int main()
{
char *s1 = "0xaf10 42 0x27C 9952"; // "0xaf10 42 0x27C 9952"는 문자열
int num1; int num2; int num3; int num4;
char *end; // 이전 숫자의 끝 부분을 저장하기 위한 포인터
num1 = strtol(s1, &end, 16); // 16진법으로 표기된 문자열을 정수로 변환
num2 = strtol(end, &end, 10); // 10진법으로 표기된 문자열을 정수로 변환
num3 = strtol(end, &end, 16); // 16진법으로 표기된 문자열을 정수로 변환
num4 = strtol(end, NULL, 10); // 10진법으로 표기된 문자열을 정수로 변환
printf("%x\n", num1); // af10
printf("%d\n", num2); // 42
printf("%X\n", num3); // 27C
printf("%d\n", num4); // 9952
return 0;
}
atof()
- 문자열을 실수로 바꿀 수 있음
- atof(문자열);
- 헤더 : stdlib.h
- double atof(char const *_String);
- 성공하면 변환된 실수를 반환, 실패하면 0을 반환
#include <stdio.h>
#include <stdlib.h> // atof 함수가 선언된 헤더 파일
int main()
{
char *s1 = "35.283672"; // "35.283672"은 문자열
float num1; num1 = atof(s1); // 문자열을 실수로 변환하여 num1에 할당
printf("%f\n", num1); // 35.283672
return 0;
}
strtof()
- 여러개의 실수로 된 문자열을 실수로 바꿀 수 있음
- strtof(문자열, 끝포인터);
- 헤더 : stdlib.h
- float strtof(char const *_String, char **_EndPtr);
- 성공하면 변환된 실수를 반환, 실패하면 0을 반환
#include <stdio.h>
#include <stdlib.h> // strtof 함수가 선언된 헤더 파일
int main()
{
char *s1 = "35.283672 3.e5 9.281772 7.e-5"; // "35.283672 3.e5f 9.2817721 7.e-5f"는 문자열
float num1; float num2; float num3; float num4;
char *end; // 이전 숫자의 끝 부분을 저장하기 위한 포인터
num1 = strtof(s1, &end); // 문자열을 실수로 변환
num2 = strtof(end, &end); // 문자열을 실수로 변환
num3 = strtof(end, &end); // 문자열을 실수로 변환
num4 = strtof(end, NULL); // 문자열을 실수로 변환
printf("%f\n", num1); // 35.283672
printf("%e\n", num2); // 3.000000e+05
printf("%f\n", num3); // 9.281772
printf("%e\n", num4); // 7.000000e-05
return 0;
}
strtod()
- 문자열을 double형 실수로 변환(strtof와 사용법 같음)
- strtod(문자열, 끝포인터);
- double strtod(char const *_String, char **_EndPtr);
- 성공하면 변환된 실수를 반환, 실패하면 0을 반환
728x90