C语言中,将字符串转换为整数常用的函数有三种:atoi、strtol 和 sscanf。atoi 是最简单的方式,直接将字符串转换为整数。strtol 比 atoi 更强大,支持错误检查和进制指定。sscanf 适用于复杂的格式化转换,能直接将结果存储在变量中,但使用较为复杂。

1、使用 atoi() (ASCII 到整数)

最简单的将字符串转换为整数的方法是使用 atoi()(ASCII to Integer)函数。这个函数在 库中声明。

int atoi(const char *str);

str是要转换的字符串,表示要转换的数字。

返回值是返回与字符串对应的整数。如果字符串不是有效的整数,atoi() 返回 0

#include <stdio.h>
#include <stdlib.h>

int main() {
    const char *str = "1234";
    int num = atoi(str);

    printf("转换后的整数: %d\n", num);

    return 0;
}

2、使用 strtol() (字符串到长整数)

一个更稳健和安全的将字符串转换为整数的方法是使用 strtol()。这个函数同样在 中声明。它可以指定进制(例如,十进制、十六进制),并通过额外的参数提供错误处理。

long int strtol(const char *str, char **endptr, int base);

str是要转换的字符串。

endptr是一个指向指针的指针,转换结束时它指向剩余未转换的部分(有助于错误处理)。

base是指定转换的进制。例如,10 表示十进制,16 表示十六进制。

返回值是返回转换后的长整数。如果字符串不是有效的数字,它会返回 0 并将 endptr 设置为指向第一个无效字符。

#include <stdio.h>
#include <stdlib.h>

int main() {
    const char *str = "1234abc";
    char *end;
    long num = strtol(str, &end, 10);

    printf("转换后的整数: %ld\n", num);
    printf("剩余字符串: %s\n", end);

    return 0;
}

3、使用 sscanf() (字符串扫描)

另一个将字符串转换为整数的方法是使用 sscanf() 函数。该函数在 中声明,当需要按照特定的格式解析字符串时,它非常有用。

int sscanf(const char *str, const char *format, ...);

str是要读取的输入字符串。

format是格式说明符(例如,%d 表示整数)。

...是用于存储转换结果的变量。

返回值是成功读取的项数。如果发生错误,sscanf() 返回 0

#include <stdio.h>

int main() {
    const char *str = "1234";
    int num;
    int result = sscanf(str, "%d", &num);

    if (result == 1) {
        printf("转换后的整数: %d\n", num);
    } else {
        printf("转换字符串为整数时出错。\n");
    }

    return 0;
}

推荐文档

相关文档

大家感兴趣的内容

随机列表