字符串类型与整型之间的转换

atoi函数——将字符串类型转换为整型

函数概括:

atoi 函数会将字符串中表示数值的字符解析为对应的整型数值。

解析从第一个非空白的字符开始,起始位置可以是一个可选的字符,用于表示正号('+')或负号('-')。后边跟随着若干表示十进制数字的字符,如果检测到表示非数字的字符,则结束解析。最后返回已经成功解析的数字(整型)。

如果字符串的第一个非空白字符表示的不是一个有效的数字,或者字符串中根本就不包含表示数字的字符,甚至只是一个空字符串……这样的话,返回值就只能是 0。

#include <stdlib.h>
int atoi(const char * str);

功能:将字符串类型转换为整型

参数:str:c语言的标准字符串

返回值

如果函数调用成功,返回值是字符串转换后对应的整型数值;

如果转换的结果超出一个整型的存放范围,那么会导致一个未定义的行为

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
    printf("%d,占用%d个字节\n",atoi("1234"),sizeof(atoi("1234")));
    printf("%d\n",atoi("-1234.12"));
    printf("%d\n",atoi("12356789123456789"));
    return 0;
}

itoa函数——将整型转换为字符串类型

函数概括:

itoa 函数将整型值转换为指定进制表示的标准字符串。

如果是十进制数,并且数值是负的,则转换后的字符串前边有一个负号('-');

如果是其他进制数,其值始终被认为是无符号类型。

用于存放的字符串必须拥有足够的空间,以便可以容纳任何可能的数值:对于 2 进制数,需要使用 (sizeof(int)*8+1) 个字节来存放。比如在 32 位平台上,则需要 33 个字节来存放。在 64 位平台上,需要 65个字节来存放;

#include <stdlib.h>
char *itoa(int value, char *str, int base);

功能:将整型转换为指定进制表示的标准字符串类型

参数:value:待转换的整型数值

str:用于存放转换结果的字符串

base:1):指定转换结果用多少进制数来表示

2):取值范围是2~36(2表示二进制,10表示十进制...)

返回值:返回值是一个指向转换结果的指针,同 str 参数。

该函数并不是标准的 C 语言函数,因此不能在所有编译器中使用。

为了提高程序的可移植性,可以使用 sprintf函数代替:

sprintf(str,"%d",value) // 转换为十进制表示的字符串

sprintf(str,"%o",value) // 转换为八进制表示的字符串

sprintf(str,"%x",value) // 转换为十六进制表示的字符串

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int i;
    char buf[33];
  
    printf("输入一个数字: ");
    scanf("%d", &i);
    sprintf(buf,"%d", i);
    printf("dec: %s\n", buf);
    sprintf(buf,"%o", i);
    printf("oct: %s\n", buf);
    sprintf(buf,"%x", i);
    printf("hex: %s\n", buf);
    return 0;
}

sprintf 函数与 printf函数类似,它是将格式化数据写入到字符串中。

缓冲区的尺寸必须足够大,以至于可以包含整个转换后的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值