将字符转换为数字:直接转换:使用 atoi()/strtol() 函数,指定相应的进制(如 atoi("123")、strtol("123", NULL, 10))。间接转换 - ASCII 值:从字符的 ASCII 值减去 '0'(如 '5' - '0' 转换为 5)。间接转换 - sscanf():使用 sscanf() 从字符串中读取数字(如 sscanf("123", "%d", &num))。

如何在C语言中将字符转换为数字
直接转换
-
使用
atoi()函数:
这个函数将一个字符串转换为一个整型数字。例如:int num = atoi("123"); -
使用
strtol()函数:
这个函数将一个字符串转换为一个长整型数字。它可以指定进制(例如二进制、八进制或十进制)。例如:long int num = strtol("123", NULL, 10); // 10 表示十进制
间接转换
-
使用 ASCII 值:
每个字符都有一个对应的 ASCII 值。可以减去 ASCII 值'0'(48)将其转换为数字。例如:int num = '5' - '0'; // 5
-
使用
sscanf()函数:
这个函数从一个字符串中读取格式化的数据。可以将其用于读取数字。例如:int num; sscanf("123", "%d", &num);
特殊情况
-
空格和换行符:在解析数字时,需要跳过空格和换行符。可以使用
isspace()函数进行检查。 - 非数字字符:如果字符串中包含非数字字符,转换可能会失败。需要处理这种情况并返回错误。
示例
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char str[] = "12345";
// 直接转换
int num1 = atoi(str);
printf("num1 (atoi): %d\n", num1);
// 间接转换 (ASCII)
int num2 = str[0] - '0';
printf("num2 (ASCII): %d\n", num2);
// 间接转换 (sscanf)
int num3;
sscanf(str, "%d", &num3);
printf("num3 (sscanf): %d\n", num3);
return 0;
}</ctype.h></stdlib.h></stdio.h>
输出:
num1 (atoi): 12345 num2 (ASCII): 1 num3 (sscanf): 12345
13万字C语言保姆级教程(深入):立即使用
在学习笔记中,你将探索c语言的核心概念和高级技巧!











