성공 : 변환된 정수 반환
실패 : 0 반환
int main()
{
char *s1 = "252";
int num1;
num1 = atoi(s1);
printf("%d\n", num1);
}
>>> 252
성공 : 변환된 정수 반환
실패 : 0 반환
int main()
{
char *s1 = "0x13bc 423 0xaaa";
int num1;
int num2;
int num3;
char *end; // 이전 숫자의 끝부분을 저장할 포인터
num1 = strtol(s1, &end, 16); end에 변환된정수 0x13bc의 다음 공백부터 끝까지 저장된다.
num2 = strtol(end, &end, 10); // end = " 0xaaa"
num3 = strtol(end, NULL, 16); // 다음 숫자는 없으니 NULL로 지정
printf("%x\n", num1);
printf("%d\n", num2);
printf("%x\n", num3);
}
>>> 13bc
>>> 423
>>> aaa
처음 변경할 때는 변환할 문자열이 있는 s1을 넣고 끝포인터에 &end로 end의 주소값을 넣어주어 end에 변환한 정수의 끝부분 포인터를 넣어준다.
이후부터 문자열에 변환한 정수의 끝부분부터 계속하기 위해 end를 넣어준다.
s1의 문자열에 넣어 strtol()을 사용해도 s1의 문자열은 훼손되지 않는다.
자체적으로 함수가 문자열을 읽어서 반환할 뿐이다.
성공 : 변환된 실수를 반환
실패 : 0을 반환
int main()
{
char *s1 = [3.14523];
float num1;
num1 = atof(s1);
printf("%f\n", num1);
}
>>> 3.14523
위 문자열 to 정수랑 같음
성공 : 변환된 실수 반환
실패 : 0 반환
int main()
{
char *s1 = 3.142 3.e5 88.1201"
float num1;
float num2;
float num2;
char *end;
num1 = strtof(s1, &end);
num2 = strtof(end, &end);
num3 = strtof(end, NULL);
printf("%f\n", num1);
printf("%e\n", num2);
printf("%f\n", num3);
}
>>> 3.142
>>> 3.e5
>>> 88.1201
위 여러 진법 문자열 to 정수랑 비슷하다.