strtol을 사용하여 문자열을 긴 변환으로 오류 감지
C 프로그래밍에서 strtol 함수는 일반적으로 문자열 표현을 변환하는 데 사용됩니다. 긴 정수를 숫자 값으로 변환합니다. 그러나 strtol만 사용하면 항상 충분한 오류 처리가 제공되지 않을 수 있습니다.
문제:
제공된 코드는 프로그램이 문자열을 긴 정수로 올바르게 변환하는 시나리오를 보여줍니다. , 성공적인 변환에도 불구하고 "변환할 수 없습니다"라는 오류 메시지도 인쇄합니다. 이는 프로그램이 strtol이 문자열을 성공적으로 변환하면 두 번째 매개변수(남은 문자열을 나타냄)가 NULL이어야 한다고 가정하기 때문입니다. 그러나 특정 조건에서는 성공적인 변환에도 불구하고 NULL이 아닌 남은 문자열이 발생할 수 있습니다.
해결책:
strtol에서 오류를 정확하게 감지하려면 다음 개선 사항을 고려하십시오.
수정된 함수:
bool parseLong(const char *str, long *val) { char *temp; bool rc = true; errno = 0; *val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">if (parseLong(str, &value)) // Conversion successful else // Handle error' || ((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)) rc = false; return rc; }
사용법:
이 수정된 함수는 변환이 성공했는지 나타내는 부울 값을 반환합니다. 아니면. 다음과 같이 사용할 수 있습니다.
추가 참고 사항:
위 내용은 C에서 strtol을 사용하여 문자열을 긴 정수로 변환할 때 오류를 안정적으로 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!