46.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을 넣어주면 됩니다.