将数值转化为字符串的函数

来源:本站
导读:目前正在解读《将数值转化为字符串的函数》的相关信息,《将数值转化为字符串的函数》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《将数值转化为字符串的函数》的详细说明。
简介:面试例题:使用库函数将数字转换为字符串。考点:C库函数中数字转换为字符串的使用。

数字转化为字符串

面试例题1:使用库函数将数字转换为字符串。

考点:C库函数中数字转换为字符串的使用。

出现频率:★★★

解析

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。

itoa():将整型值转换为字符串。

ltoa():将长整型值转换为字符串。

ultoa():将无符号长整型值转换为字符串。

gcvt():将浮点型数转换为字符串,取四舍五入。

ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。

fcvt():指定位数为转换精度,其余同ecvt()。

还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢。下列程序演示了如何使用itoa()函数和gcvt()函数:

1 # include 2 # include 3 4 int main ()5 {6 int num_int = 435;7 double num_double = 435.10f;8 char str_int[30];9 char str_double[30];10 11 itoa(num_int, str_int, 10); //把整数num_int转成字符串str_int12 gcvt(num_double, 8, str_double); //把浮点数num_double转成字符串str_double13 14 printf("str_int: %s/n", str_int);15 printf("str_double: %s/n", str_double);16 17 return 0;18 } 

程序输出结果:

1 str_int: 4352 str_double: 435.10001

代码第11行中的参数10表示按十进制类型进行转换,转换后的结果是"435",如果按二进制类型进行转换,则结果为"1101110011"。

代码第12行中的参数8表示精确位数,这里得到的结果是"435.10001"。

答案

可以使用atoi系列函数把数字转换成字符串。

面试例题2:不使用库函数将整数转换为字符串。

考点:数字转换为字符串,理解相关ASCII码。

出现频率:★★★★

解析

如果不使用atoi或sprintf等库函数,可以通过把整数的各位上的数字加"0"转换成char类型并存到字符数组中。但是要注意,需要采用字符串逆序的方法。如以下程序所示:

1 #include 2 using namespace std;3 4 void int2str(int n, char *str)5 {6 char buf[10] = "";7 int i = 0;8 int len = 0;9 int temp = n < 0 ? -n: n; // temp为n的绝对值10 11 if (str == NULL)12 {13 return;14 }15 while(temp)16 {17 buf[i++] = (temp % 10) + '0'; //把temp的每一位上的数存入buf18 temp = temp / 10;19 }20 21 len = n < 0 ? ++i: i; //如果n是负数,则多需要一位来存储负号22 str[i] = 0; //末尾是结束符023 while(1)24 {25 i--;26 if (buf[len-i-1] ==0)27 {28 break;29 }30 str[i] = buf[len-i-1]; //把buf数组里的字符拷到字符串31 }32 if (i == 0 ) 33 {34 str[i] = '-'; //如果是负数,添加一个负号35 }36 }37 38 int main()39 {40 int nNum;41 char p[10];42 43 cout << "Please input an integer:";44 cin >> nNum;45 cout << "output: " ;46 int2str(nNum, p); //整型转换成字符串47 cout<< p << endl;48 49 return 0;50 }

程序中的int2str函数完成了int类型到字符串类型的转换。在代码第46行对int2str函数做了测试。程序的执行结果如下所示:

Please input an integer: 1234Output: 1234 

如果输入的是个负数,程序执行结果如下所示:

Please input an integer: -1234Output: -1234 

接下来对int2str函数的实现进行分析。

代码第9行,把参数n的绝对值赋给temp,以后在计算各个位的整数时用temp,这样保证在负数情况下取余不会出现问题。

代码第11~第14行判断str的有效性,str不为NULL。

代码第15~第19行的while循环中,将n的各个位存放到局部数组buf中,存放的顺序与整数顺序相反。例如n为整数123 456,while循环结束后buf应为"654 321"。

代码第21行计算转换后字符串的长度len,如果是负数,长度应该再加1。

代码第22~第31行把数组buf中的非0元素逆向复制到参数str指向的内存中,如果n是负数,则str指向的第一个内存存放负号。

提醒:《将数值转化为字符串的函数》最后刷新时间 2024-03-14 01:01:29,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《将数值转化为字符串的函数》该内容的真实性请自行鉴别。