2012-02-26 6 views
0

부동 소수점 숫자를 읽으려고합니다 (명령 줄 입력). 이것이 올바른 방법일까요? argv의 요소 sscanf() 사용부동 소수점 숫자 읽기

sscanf(argv[i], "%f", &float) 
+1

글쎄, 맞습니까? 컴파일하고 실행하면 어떻게됩니까? –

+0

'float'은 C에서 예약어로 변수 이름으로 사용할 수 없습니다. –

+0

내 코드가 아프지 않을 때 – Raj

답변

2

명령 행 인수에서 float를 추출하는 하나의 방법이다. 또한 반환 값을 확인하여 float이 문자열에서 실제로 추출되어 변수에 저장되었는지 확인해야합니다.

더 나은 방법은 strtod()을 사용하는 것입니다. 두 번째 인수로 더 나은 유효성 검사를 수행 할 수 있기 때문입니다. 이 포인터를 사용하여 변환에 사용 된 마지막 문자가 문자열의 마지막 문자인지 확인할 수 있습니다. 즉. "3.5abc"에 유효한 float가 포함되어 있는지 확인할 수는 있지만 전체 문자열은 하나의 유효한 float가 아닙니다.

만약 당신이 argv과 아무 상관이 다음이 stdin 입력을 읽고 명령 행 입력에 의해 의미하고 대신 scanf() 또는 + strtod()fgets()을 사용해야하는지.

atof은 본질적으로 여분의 오류 검사 기능을 제공하지 않는 strtod의 버전입니다. 맨 페이지에서 그것은 단지 : strtod(nptr, (char **) NULL);입니다. 또한 C99은 strtof() 함수를 제공하며 double 대신 float을 반환합니다. 에 double을 할당하고 암시 적으로 변환해야하므로 strtod()을 사용하면 문제가 발생할 것이라고 생각하지 마십시오.