int num = atoi("123");使用 strtol() 函数: 这个函数将一个字符串转换为一个长整型数字。它可以指定进制(例如二进制、八进制或十进制)。例如:立即学习“C语言免费学习笔记(深入)”;

c语言如何把字符转换成数字

来源:这里教程网 时间:2026-02-21 16:49:29 作者:

如何在C语言中将字符转换为数字

直接转换

使用

atoi()
函数:
这个函数将一个字符串转换为一个整型数字。例如:

<code class="c">int num = atoi("123");</code>

使用

strtol()
函数:
这个函数将一个字符串转换为一个长整型数字。它可以指定进制(例如二进制、八进制或十进制)。例如:

立即学习“C语言免费学习笔记(深入)”;

<code class="c">long int num = strtol("123", NULL, 10); // 10 表示十进制</code>

间接转换

使用 ASCII 值:
每个字符都有一个对应的 ASCII 值。可以减去 ASCII 值

'0'
(48)将其转换为数字。例如:

<code class="c">int num = '5' - '0'; // 5</code>

使用

sscanf()
函数:
这个函数从一个字符串中读取格式化的数据。可以将其用于读取数字。例如:

<code class="c">int num;
sscanf("123", "%d", &num);</code>

特殊情况

空格和换行符:在解析数字时,需要跳过空格和换行符。可以使用
isspace()
函数进行检查。
非数字字符:如果字符串中包含非数字字符,转换可能会失败。需要处理这种情况并返回错误。

示例

<code class="c">#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;
}</code>

输出:

<code>num1 (atoi): 12345
num2 (ASCII): 1
num3 (sscanf): 12345</code>

相关推荐