使用strtol()函数来替换atoi()函数。在strtol()函数中,需要指定字符串、字符串尾部指针、基数等参数。此外,还需要使用errno和strtol()的返回值进行错误检查。
示例代码如下:
#include
#include
#include
int main()
{
char str[] = "123a4";
char *endptr;
long val;
errno = 0;
val = strtol(str, &endptr, 10);
/* 检查错误 */
if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
if (endptr == str) {
fprintf(stderr, "No digits were found\n");
exit(EXIT_FAILURE);
}
/* 输出结果 */
printf("The number is %ld\n", val);
return 0;
}
在上述示例中,当字符串解析完成无误时,val变量将存储字符串的整数值,而endptr变量将指向未解析的最后一个字符的指针。如果发生错误,则会将errno设置为ERANGE或非0值。进行错误检查后,可以在程序中处理val的值和endptr指针的值。