
在C语言中,将数字字符串转换成数字的方法包括使用标准库函数、手动解析和利用第三方库。最常用的方法是使用标准库函数,如atoi、atol、atof、strtol、strtoul和sscanf等。 其中,strtol是较为推荐的方法,因为它提供了更高的安全性和灵活性。
一、使用标准库函数
1. atoi 和 atol
atoi(ASCII to Integer)和atol(ASCII to Long)是最简单的转换函数,但它们并不处理错误情况,因此在大多数情况下不推荐使用。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "1234";
int num = atoi(str1);
printf("String: %s, Integer: %dn", str1, num);
char str2[] = "5678";
long num2 = atol(str2);
printf("String: %s, Long: %ldn", str2, num2);
return 0;
}
虽然atoi和atol使用简单,但它们不提供错误检测机制,因此在实际应用中存在风险。
2. strtol 和 strtoul
strtol(String to Long)和strtoul(String to Unsigned Long)提供了更高的安全性和灵活性,允许用户指定基数,并且能够处理错误情况。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int main() {
char str1[] = "1234";
char *endptr;
errno = 0; // 清除errno
long num = strtol(str1, &endptr, 10);
if (errno == ERANGE || *endptr != '