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函数类似,它是将格式化数据写入到字符串中。
缓冲区的尺寸必须足够大,以至于可以包含整个转换后的结果。
