부동 소수점 숫자를 읽으려고합니다 (명령 줄 입력). 이것이 올바른 방법일까요? argv
의 요소 sscanf()
사용부동 소수점 숫자 읽기
sscanf(argv[i], "%f", &float)
부동 소수점 숫자를 읽으려고합니다 (명령 줄 입력). 이것이 올바른 방법일까요? argv
의 요소 sscanf()
사용부동 소수점 숫자 읽기
sscanf(argv[i], "%f", &float)
명령 행 인수에서 float
를 추출하는 하나의 방법이다. 또한 반환 값을 확인하여 float
이 문자열에서 실제로 추출되어 변수에 저장되었는지 확인해야합니다.
더 나은 방법은 strtod()
을 사용하는 것입니다. 두 번째 인수로 더 나은 유효성 검사를 수행 할 수 있기 때문입니다. 이 포인터를 사용하여 변환에 사용 된 마지막 문자가 문자열의 마지막 문자인지 확인할 수 있습니다. 즉. "3.5abc"
에 유효한 float가 포함되어 있는지 확인할 수는 있지만 전체 문자열은 하나의 유효한 float가 아닙니다.
만약 당신이 argv
과 아무 상관이 다음이 stdin
입력을 읽고 명령 행 입력에 의해 의미하고 대신 scanf()
또는 + strtod()
fgets()
을 사용해야하는지.
atof
은 본질적으로 여분의 오류 검사 기능을 제공하지 않는 strtod
의 버전입니다. 맨 페이지에서 그것은 단지 : strtod(nptr, (char **) NULL);
입니다. 또한 C99은 strtof()
함수를 제공하며 double
대신 float
을 반환합니다. 에 double
을 할당하고 암시 적으로 변환해야하므로 strtod()
을 사용하면 문제가 발생할 것이라고 생각하지 마십시오.
글쎄, 맞습니까? 컴파일하고 실행하면 어떻게됩니까? –
'float'은 C에서 예약어로 변수 이름으로 사용할 수 없습니다. –
내 코드가 아프지 않을 때 – Raj