41.10 연습문제: 여러 개의 실수로 된 문자열을 실수로 변환하기
다음 소스 코드를 완성하여 실수 29.977213, 4528.112305가 각 줄 마다 출력되게 만드세요.
practice_string_to_float_multiple_real_number.c
#include <stdio.h> #include <stdlib.h> int main() { char *s1 = "29.977213 4528.112305"; float num1; float num2; char *end; ①_____________________ ②_____________________ printf("%f\n", num1); printf("%f\n", num2); return 0; }
실행 결과
29.977213 4528.112305
정답
① num1 = strtof(s1, &end); ② num2 = strtof(end, NULL);
해설
"29.977213 4528.112305"와 같이 문자열로 실수 두 개가 주어졌습니다. 이런 형태의 문자열을 변환하려면 strtof 함수를 사용해야 합니다. 먼저 strtof(s1, &end);처럼 첫 번째 실수를 변환하고 끝 포인터를 구합니다. 그리고 strtof(end, NULL);처럼 앞에서 구한 끝 포인터를 이용하여 두 번째 실수를 변환합니다. 세 번째 실수는 없으므로 끝 포인터는 구하지 않아도 되기 때문에 NULL을 넣어주면 됩니다.