오류 처리와 함께 strtol의 올바른 사용법
다음 C 또는 C 프로그램은 strtol이 반환한다는 사실에 의존하여 문자열을 긴 정수로 변환합니다. 성공적인 변환의 경우 NULL입니다. 그러나 값이 55인 경우 다음 메시지와 함께 실패합니다.
./convertToLong 55 Could not convert 55 to long and leftover string is: 55 as long is 55
이 문서에서는 strtol의 오류를 올바르게 감지하고 해당 프로그램의 문제를 해결하는 방법을 설명합니다.
strtol의 오류 처리
strtol(및 strtoll과 같은 관련 기능)의 공식 사양에는 다음과 같은 내용이 나와 있습니다. that:
프로그램 수정
C에서는 설정을 통해 strtol의 오류를 감지할 수 있습니다. 함수를 호출하기 전에 errno를 0으로 설정하세요. 아래의 수정된 parsLong 함수는 다음 접근 방식을 따릅니다.
static long parseLong(const char *str) { errno = 0; char *temp; long val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">bool parseLong(const char *str, long *val) { char *temp; bool rc = true; errno = 0; *val = strtol(str, &temp, 0); if (temp == str || *temp != '' || ((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)) rc = false; return rc; }
C에서 보다 유연한 접근 방식은 성공/실패 표시기를 반환하고 변환된 값을 추출하기 위한 별도의 함수를 제공하는 것입니다.
결론
이러한 수정을 통해 parsLong 함수는 strtol의 오류를 올바르게 처리하여 애플리케이션이 성공 여부를 판단할 수 있습니다. 또는 변환 실패를 확인하고 오류를 적절하게 처리하세요.
위 내용은 C 및 C에서 strtol을 사용할 때 오류를 올바르게 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!