atoi()函数和itoa()函数

本文详细介绍了C语言中数字和字符串之间的类型转换方法,包括itoa、atoi等函数的使用,以及注意事项和示例代码,帮助读者理解并掌握C语言类型转换的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型转换的几种方式

1.int/float to string/array:

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。

除此外,还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢

2. string/array to int/float

C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

============================================================

atoi()函数

原型: int atoi(const char * str);// const说明指针指向的数据不能被修改
头文件: #include <stdlib.h>
功能: 把字符串转换成整型数。
参数str: 要转换的字符串。
返回值: 如果输入了无法转换的值,则atoi的返回值为0。
注意: 1.atoi返回的是int类型,输入str的范围不要超过int类型的范围。
2. 若超过int范围,则显示-2147483648(溢出下界)或者2147483647(溢出上界)。
示例代码:

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


int main()
{
    int a;
    char *str = "-112233";
    a = atoi(str);
    printf("a = %d\n", a);
    return 0;
}

输出结果为:a = -112233

注意:转化时跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’/0’)才结束转换,并将结果返回。
示例代码:

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

int main()
{
    char *ptr1 = "-1122.33";
    char *ptr2 = "+1122a33";
    char *ptr3 = "   11a2233";
    char *ptr4 = "112 233";
    int a,b,c,d;

    a = atoi(ptr1);
    b = atoi(ptr2);
    c = atoi(ptr3);
    d = atoi(ptr4);
    printf("a = %d, b = %d, c = %d, d = %d\n", a,b,c,d);
   return 0;
}

输出结果为:a = -1122, b = 1122, c = 11, d = 112

itoa()函数

原型: char *itoa( int value, char *str,int radix);
功能: 将整数value 转换成字符串存入str 指向的内存空间 ,radix 为转换时所用进制(保存到字符串中的数据的进制进制)。
参数:
value: 要转换的数据。
str: 目标字符串的地址。
radix: 转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。
示例代码:

# include <stdio.h>
# include <stdlib.h>
int main ()
{
        int num = 100;
        char str[25];
        itoa(num, str, 10);    //转换为十进制
        printf("The string 'str' is %s.\n" ,str);
        return 0;
}

itoa()不是一个标准的c函数,他是windows特有的,也就是linux下是编译不了的,跨平台写程序,要用sprintf。
示例代码:

# include <stdio.h>
# include <stdlib.h>
int main ()
{
        int num = 100;
        char str[25];
        sprintf(str,"%x",num);
        printf("str = %s\n",str);
        return 0;
}

linux输出结果为:str = 64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值