편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.07.12

    c언어 문자열을 실수로 변환 strtof함수


    c언어 공부중인 초보입니다.

    책에선

    #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;
    }
    

    이렇게 예제가 되있는데 그러면 처음 "35.283672 3.e5f 9.2817721 7.e-5f" 문자열에서 "35.283672"num1에 실수로 변환한 값을 주고 num2에 들어가는 문자열은 " 3.e5 9.281772 7.e-5"인데 이러면 처음부터 공백이라는 특수문자가 있어서 0으로 변환되는 거 아닌가요? 아니면 공백을 무시하고 그 다음부터 인식하는 건가요?

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.07.09

    c언어 문자열을 실수로 변환 strtof함수


    c언어 공부중인 초보입니다 책에선 ```#include

    include // 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;
    

    }``` 이렇게 예제가 되있는데 그러면 처음 "35.283672 3.e5f 9.2817721 7.e-5f" 문자열에서 "35.283672"를 num1에 실수로 변환한 값을 주고 num2에 들어가는 문자열은 " 3.e5 9.281772 7.e-5"인데 이러면 처음부터 공백이라는 특수문자가 있어서 0으로 변환되는 거 아닌가요? 아니면 공백을 무시하고 그 다음부터 인식하는 건가요?