c语言中整型和字符串之间的转换
整型转字符串
整型转字符串有两种方式实现,分别是通过拓展函数itoa或者是输入输出函数sprintf来实现。具体细节如下:
itoa()函数
itoa (integer to alphanumeric)是把整型数转换成字符串的一个函数。
windows环境下,想要使用这个函数需要引用的头文件. 文件中对itoa的声明如下:
char* itoa(int value,char*string,int radix);
value就是要转换的整型,char *string就是转换后的字符串的地址,而radix是用来选择进制的.
itoa函数的用法如下
#include #include int main() { int number1 = 123456; int number2 = -123456; char string[16] = {0}; itoa(number1,string,10); printf("数字:%d 转换后的字符串为:%s\n",number1,string); itoa(number2,string,10); printf("数字:%d 转换后的字符串为:%s\n",number2,string); return 0; }
运行的结果为:
可以看出,itoa(number1,string,10);这一步,itoa将number1的整型转换成了字符串并且存储在string里面,并且这个字符串是十进制的,以后radix为10. 如果将这个10改成2,则运行结果为:
sprintf()函数
sprintf函数在头文件里面,函数声明如下:
int sprintf( char *buffer, const char *format [, argument,…] );
其中buffer是用来存储转换后的字符串,format则是转换的格式,后续的参数是任意个的. 具体使用方法如下:
#include int main() { int number1 = 123456; int number2 = -123456; char string[16]; sprintf(string, "%d", number1); printf("string = %s\n", string); return 0; }
运行结果:
这里sprintf(string, "%d", number1);将number1通过%d的格式转换成字符串,然后存储在string里面. 因此打印出来结果为string = 123456 如果更改sprintf中的format, 改成sprintf(string, "the value of string is %d", number1);,其他不变,再次运行程序,结果为:
可见,sprintf中的format会将%d中的内容替换成后面的number1,再将整个字符串赋值给string,因此,如果我们只想要得到整型的字符串,只需要将format设置为%d即可,如果添加了其他的内容,string的内容就不只是number1的字符串形式了.
字符串转整型
和整型转字符串类似,也有两种方法:atoi函数和sscanf函数
atoi函数
和itoa函数类似,只是将字符串转换成整型,函数声明在中,函数的格式如下:
int atoi(const char *nptr);
nptr是需要转换的字符串.
具体使用方法如下:
#include #include int main() { printf("字符串\"123456\"转换为数字:%d\n",atoi("123456")); printf("字符串\"-123456\"转换为数字:%d\n",atoi("-123456")); return 0; }
运行结果为:
sscanf函数
具体使用方法如下:
#include int main() { char str[10] = "12345"; int a; sscanf(str, "%d", &a); printf("%d\n", a); return 0; }
运行结果为: