在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 != '