将字符串转换为整数在C语言中是一个常见的需求,可以通过使用内置函数如atoi
、strtol
、自定义函数。其中,atoi
函数使用简单,但不处理错误,strtol
功能强大,支持错误检测和多种进制转换。接下来,我们将详细介绍这些方法,并提供示例代码。
一、使用atoi
函数
atoi
(ASCII to Integer)是C标准库中的函数,用于将字符串转换为整数。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
int num = atoi(str);
printf("The number is %dn", num);
return 0;
}
atoi
非常易于使用,但它有一个主要的缺点:它不处理错误。如果输入不是有效的整数,atoi
将返回0,而不会有任何错误提示。
二、使用strtol
函数
strtol
(String to Long)是一个更强大的函数,它不仅支持错误检测,还支持多种进制转换。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
char str[] = "12345";
char *endptr;
long num;
errno = 0; // To distinguish success/failure after call
num = strtol(str, &endptr, 10);
// Check for various possible errors
if (endptr == str) {
printf("No digits were foundn");
} else if ((errno == ERANGE && (num == LONG_MAX || num == LONG_MIN))
|| (errno != 0 && num == 0)) {
perror("strtol");
} else if (*endptr != '