`
Kingson_Wu
  • 浏览: 123648 次
文章分类
社区版块
存档分类
最新评论

C语言将数字转化为字符串

 
阅读更多

我们常用到的有以下几种:

  1、itoa

  功能:把一整数转换为字符串

  用法:char*itoa(intvalue,char*string,intradix);

  详细解释:itoa是英文integertoarray(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.

  参数:

  value:待转化的整数。

  radix:是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

  *string:保存转换后得到的字符串。

  返回值:

  char*:指向生成的字符串,同*string。

  备注:该函数的头文件是"stdlib.h"

  2、ltoa

  功能:把一长整形转换为字符串

  用法:char*ltoa(longvalue,char*string,intradix);

  详细解释:itoa是英文longintegertoarray(将longint长整型数转化为一个字符串,并将值保存在数组string中)的缩写.

  参数:

  value:待转化的长整型数。

  radix:是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

  *string:保存转换后得到的字符串。

  返回值:

  char*:指向生成的字符串,同*string。

  备注:该函数的头文件是"stdlib.h"

  3、ultoa

  功能:把一无符号长整形转换为字符串

  用法:char*ultoa(unsignedlongvalue,char*string,intradix);

  详细解释:itoa是英文unsignedlongintegertoarray(将unsignedlongint无符号长整型数转化为一个字符串,并将值保存在数组string中)的缩写.

  参数:

  value:待转化的无符号长整型数。

  radix:是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

  *string:保存转换后得到的字符串。

  返回值:

  char*:指向生成的字符串,同*string。

  备注:该函数的头文件是"stdlib.h"

  4、gcvt

  功能:把浮点型数转换为字符串,取四舍五入

  用法:char*gcvt(doublevalue,intndigit,char*buf);

  详细解释:gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。

  参数:

  value:待转化的浮点数。

  ndigit:存储的有效数字位数。

  *buf:结果的存储位置。

  返回值:

  char*:指向生成的字符串,同*buf。

  备注:该函数的头文件是"stdlib.h"

  5、ecvt

  功能:将双精度浮点型数转换为字符串,转换结果中不包括十进制小数点

  用法:char*ecvt(doublevalue,intndigit,int*decpt,int*sign);

  详细解释:ecvt函数把一个双精度浮点数转换成一个字符串。value参数是要转换的浮点数。这个函数存储最多ndigit个数字值作为一个字符串,并添加一个空数字符('\0'),如果value中的数字个数超过ndigit,低位数字被舍入。如果少于ndigit个数字,该字符串用0填充。

  只有数字才存储在该字符串中,小数点位置和value符号在调用之后从decpt和sign获取。decpt参数指出给出小数点位置的整数值,它是从该字符串的开头位置计算的。0或负数指出小数点在第一个数字的左边。sign参数指出一个指出转换的数的符号的整数。如果该整数为0,这个数为正数,否则为负数。

  参数:

  value:待转换的双精度浮点数。

  ndigit:存储的有效数字位数。

  *decpt:存储的小数点位置。

  *sign:转换的数的符号。

  返回值:

  char*:指向生成的字符串。

  备注:该函数的头文件是"stdlib.h"

  6、fcvt

  功能:指定位数为转换精度,其余同ecvt

  用法:char*fcvt(doublevalue,intndigit,int*decpt,int*sign);

  详细解释:fcvt函数把一个双精度浮点数转换成一个字符串。value参数是要转换的浮点数。参与转换的实际值保留的小数位数由ndigit决定。

  只有数字才存储在该字符串中,小数点位置和value符号在调用之后从decpt和sign获取。decpt参数指出给出小数点位置的整数值,它是从该字符串的开头位置计算的。0或负数指出小数点在第一个数字的左边。sign参数指出一个指出转换的数的符号的整数。如果该整数为0,这个数为正数,否则为负数。

  参数:

  value:待转换的双精度浮点数

  ndigit:转换的字符串中包含小数点后几位

  *decpt:返回小数点在串中的位置

  *sign:符号标志。

  返回值:

  char*:指向生成的字符串。

  备注:该函数的头文件是"stdlib.h"



----------------------------------------------------------------------------
atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII码字符)
toupper(将小写字母转换成大写字母)
tolower(将大写字母转换成小写字母)


atof(将字符串转换成浮点型数)
相关函数atoi,atol,strtod,strtol,strtoul
表头文件#include<stdlib.h>
定义函数doubleatof(constchar*nptr);
函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数
字或正负符号才开始做转换,而再遇到非数字或字符串结束时
('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负
号、小数点或E(e)来表示指数部分,123.456123e-2
返回值返回转换后的浮点型数。
附加说明atof()与使用strtod(nptr,(char**)NULL)结果相同。
范例/*将字符串a与字符串b转换成数字后相加*/
#include<stdlib.h>
main()
{
char*a=-100.23;
char*b=200e-2;
floatc;
c=atof(a)+atof(b);
printf(c=%.2f\n,c);
}
执行c=-98.23
atoi(将字符串转换成整型数)
相关函数atof,atol,atrtod,strtol,strtoul
表头文件#include<stdlib.h>
定义函数intatoi(constchar*nptr);
函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数
字或正负符号才开始做转换,而再遇到非数字或字符串结束时
('\0')才结束转换,并将结果返回。
返回值返回转换后的整型数。
附加说明atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
范例/*将字符串a与字符串b转换成数字后相加*/
#include<stdlib.h>
mian()
{
chara[]=-100;
charb[]=456;
intc;
c=atoi(a)+atoi(b);
printf(c=%d\n,c);
}
执行c=356
atol(将字符串转换成长整型数)
相关函数atof,atoi,strtod,strtol,strtoul
表头文件#include<stdlib.h>
定义函数longatol(constchar*nptr);
函数说明atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数
字或正负符号才开始做转换,而再遇到非数字或字符串结束时
('\0')才结束转换,并将结果返回。
返回值返回转换后的长整型数。
附加说明atol()与使用strtol(nptr,(char**)NULL,10);结果相同。
范例/*将字符串a与字符串b转换成数字后相加*/
#include<stdlib.h>
main()
{
chara[]=1000000000;
charb[]=234567890;
longc;
c=atol(a)+atol(b);
printf(c=%d\n,c);
}
执行c=1234567890
gcvt(将浮点型数转换为字符串,取四舍五入)
相关函数ecvt,fcvt,sprintf
表头文件#include<stdlib.h>
定义函数char*gcvt(doublenumber,size_tndigits,char*buf);
函数说明gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示
显示的位数。gcvt()ecvt()fcvt()不同的地方在于,gcvt()
转换后的字符串包含小数点或正负符号。若转换成功,转换后的字
符串会放在参数buf指针所指的空间。
返回值返回一字符串指针,此地址即为buf指针。
附加说明
范例#include<stdlib.h>
main()
{
doublea=123.45;
doubleb=-1234.56;
char*ptr;
intdecpt,sign;
gcvt(a,5,ptr);
printf(avalue=%s\n,ptr);
ptr=gcvt(b,6,ptr);
printf(bvalue=%s\n,ptr);
}
执行avalue=123.45
bvalue=-1234.56
strtod(将字符串转换成浮点数)
相关函数atoi,atol,strtod,strtol,strtoul
表头文件#include<stdlib.h>
定义函数doublestrtod(constchar*nptr,char**endptr);
函数说明strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上
数字或正负符号才开始做转换,到出现非数字或字符串结束时
('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇
到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr
符串可包含正负号、小数点或E(e)来表示指数部分。如123.456
123e-2
返回值返回转换后的浮点型数。
附加说明参考atof()
范例/*将字符串a,b,c分别采用10,2,16进制转换成数字*/
#include<stdlib.h>
mian()
{
chara[]=1000000000;
charb[]=1000000000;
charc[]=ffff;
printf(a=%d\n,strtod(a,NULL,10));
printf(b=%d\n,strtod(b,NULL,2));
printf(c=%d\n,strtod(c,NULL,16));
}
执行a=1000000000
b=512
c=65535
strtol(将字符串转换成长整型数)
相关函数atof,atoi,atol,strtod,strtoul
表头文件#include<stdlib.h>
定义函数longintstrtol(constchar*nptr,char**endptr,intbase);
函数说明strtol()会将参数nptr字符串根据参数base来转换成长整型数。参
base范围从236,0。参数base代表采用的进制方式,base
值为10则采用10进制,base值为16则采用16进制等。当base值为0
时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制
做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格
字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字
符串结束时('\0')结束转换,并将结果返回。若参数endptr不为
NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr
回。
返回值返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno
中。
附加说明ERANGE指定的转换字符串超出合法范围。
范例/*将字符串a,b,c分别采用10,2,16进制转换成数字*/
#include<stdlib.h>
main()
{
chara[]=1000000000;
charb[]=1000000000;
charc[]=ffff;
printf(a=%d\n,strtol(a,NULL,10));
printf(b=%d\n,strtol(b,NULL,2));
printf(c=%d\n,strtol(c,NULL,16));
}
执行a=1000000000
b=512
c=65535
strtoul(将字符串转换成无符号长整型数)
相关函数atof,atoi,atol,strtod,strtol
表头文件#include<stdlib.h>
定义函数unsignedlongintstrtoul(constchar*nptr,char
**endptr,intbase);

函数说明strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整
型数。参数base范围从236,0。参数base代表采用的进制方
,base值为10则采用10进制,base值为16则采用16进制数
等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符
则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,
跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,
再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若
参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符
指针由endptr返回。
返回值返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno
中。
附加说明ERANGE指定的转换字符串超出合法范围。
范例参考strtol()
toascii(将整型数转换成合法的ASCII码字符)
相关函数isascii,toupper,tolower
表头文件#include<ctype.h>
定义函数inttoascii(intc)
函数说明toascii()会将参数c转换成7位的unsignedchar,第八位则会被
清除,此字符即会被转成ASCII码字符。
返回值将转换成功的ASCII码字符值返回。
范例#include<stdlib.h>
main()
{
inta=217;
charb;
printf(beforetoascii():avalue=%d(%c)\n,a,a);
b=toascii(a);
printf(aftertoascii():avalue=%d(%c)\n,b,b);
}
执行beforetoascii():avalue=217()
aftertoascii():avalue=89(Y)
tolower(将大写字母转换成小写字母)
相关函数isalpha,toupper
表头文件#include<stdlib.h>
定义函数inttolower(intc);
函数说明若参数c为大写字母则将该对应的小写字母返回。
返回值返回转换后的小写字母,若不须转换则将参数c值返回。
附加说明
范例/*s字符串内的大写字母转换成小写字母*/
#include<ctype.h>
main()
{
chars[]=aBcDeFgH12345;!#$;
inti;
printf(beforetolower():%s\n,s);
for(i=0;I<sizeof(s);i++)
s[i]=tolower(s[i]);
printf(aftertolower():%s\n,s);
}
执行beforetolower():aBcDeFgH12345;!#$
aftertolower():abcdefgh12345;!#$
toupper(将小写字母转换成大写字母)
相关函数isalpha,tolower
表头文件#include<ctype.h>
定义函数inttoupper(intc);
函数说明若参数c为小写字母则将该对映的大写字母返回。
返回值返回转换后的大写字母,若不须转换则将参数c值返回。
附加说明
范例/*s字符串内的小写字母转换成大写字母*/
#include<ctype.h>
main()
{
chars[]=aBcDeFgH12345;!#$;
inti;
printf(beforetoupper():%s\n,s);
for(i=0;I<sizeof(s);i++)
s[i]=toupper(s[i]);
printf(aftertoupper():%s\n,s);
}
执行beforetoupper():aBcDeFgH12345;!#$
aftertoupper():ABCDEFGH12345;!#$

C语言将数字转化为字符串

底层算法的实现在20110914日那天写的已经有1283次阅读了

感谢参考或原文

服务器君一共花费了8.933ms进行了3次数据库查询,努力地为您提供了提供了这个页面。

试试阅读模式?希望听取您的建议

函数char*digitToAlpha(intval,char*buf,unsignedradix)的功能是将数值转换为字符串。

参数:第一个是要转化的整数,第二个是转化后的字符串,第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串。

#include<stdio.h>

#include<stdlib.h>

char*digitToAlpha(intval,char*buf,unsignedradix);

intmain(intargc,char*argv[])

{

intiNum=55;

charstrNum[10]="";

digitToAlpha(iNum,strNum,10);

printf("%s\n",strNum);

system("PAUSE");

return0;

}

/*

功能:将数值转换为字符串

参数:第一个是要转化的整数

第二个是转化后的字符串

第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串

*/

char*digitToAlpha(intval,char*buf,unsignedradix)

{

char*p;/*pointertotraversestring*/

char*firstdig;/*pointertofirstdigit*/

chartemp;/*tempchar*/

unsigneddigval;/*valueofdigit*/

p=buf;

if(val<0)

{

/*negative,sooutput'-'andnegate*/

*p++='-';

val=(unsignedlong)(-(long)val);

}

firstdig=p;/*savepointertofirstdigit*/

do{

digval=(unsigned)(val%radix);

val/=radix;/*getnextdigit*/

/*converttoasciiandstore*/

if(digval>9)

*p++=(char)(digval-10+'a');/*aletter*/

else

*p++=(char)(digval+'0');/*adigit*/

}while(val>0);

/*Wenowhavethedigitofthenumberinthebuffer,butinreverse

order.Thuswereversethemnow.*/

*p--='\0';/*terminatestring;ppointstolastdigit*/

do

{

temp=*p;

*p=*firstdig;

*firstdig=temp;/*swap*pand*firstdig*/

--p;

++firstdig;/*advancetonexttwodigits*/

}while(firstdig<p);/*repeatuntilhalfway*/

returnbuf;

}

分享到:
评论

相关推荐

    C语言中将数字转换为字符串的方法

    C语言中将数字转换为字符串的功能,虽然没有直接的内建函数,但可以通过标准库函数如itoa(), sprintf()以及针对浮点数的fcvt()或gcvt()来实现。下面详细介绍这些方法及其相关知识点。 1. itoa()函数 itoa()是一个非...

    C语言常用数字和字符串转换函数

    C语言常用数字和字符串转换函数,toi 字符串转换成整型数 atol 字符串转换成长整型数 atof 字符串转换成浮点型数 strtol 字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 strtod 字符串转换成浮点数

    C语言字符串数字提出.zip

    在C语言中,字符串是由字符组成的数组,而从字符串中提取数字则需要运用到字符串处理函数和数值转换函数。下面我们将深入探讨这些知识点。 首先,字符串在C语言中通常以字符数组的形式存在,其结尾由一个特殊的字符...

    C语言中把数字转换为字符串-sprintf

    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比...

    C语言二进制字符串与十六进制字符串相互转化

    C语言的`strtol`函数可以用于此目的,它能将字符串转换为长整型,我们只需要指定基数为16即可。之后,我们可以将每个数字转换成4位二进制形式并连接起来。 MFC是微软提供的一套C++库,用于构建Windows应用程序。在...

    c语言字符串_数字转换函数大全

    同时,为了输出或显示,可能需要将数字转换为字符串。在使用这些函数时,需要注意检查转换是否成功,以及处理可能出现的错误,例如无效的输入或溢出问题。 以下是一些示例代码片段,演示了如何使用这些函数: ```c...

    自己动手写C语言float浮点数转换字符串的函数

    在C语言中,将浮点数转换为字符串是一项基本任务,常常用于数据的输出和文件存储。本篇文章将深入探讨如何自己动手编写一个C语言函数,实现`float`类型的浮点数转换为字符串的功能。首先,我们需要理解浮点数在...

    从字符串中提取连续的字符数字转换为整数

    本文档将详细介绍从字符串中提取连续的字符数字转换为整数的方法,並提供了完整的源代码,适合于那些想要编码实现字符串中提取连续的字符数字转换为整数的同学。 知识点1:字符串处理 在本文档中,我们使用了C语言...

    C语言实现将字符串转换为数字的方法

    在C语言中,将字符串转换为数字是一项常见的任务,这对于处理用户输入或解析文本数据至关重要。本文主要讨论了如何利用C语言的标准库函数将字符串转换为整数、长整数和浮点数。 首先,我们关注`atoi()`函数,它是...

    数字转换为字符串函数

    自己用C语言实现数字到字符串的转换,包括负数

    c语言实现设置ip、网关、子网掩码 时间字符串相互转换

    C语言标准库提供`&lt;time.h&gt;`头文件,其中`time()`函数用于获取当前时间(以time_t类型表示),而`ctime()`和`asctime()`函数可以将time_t转换为人类可读的字符串格式。相反,`strptime()`函数可以从格式化的字符串中...

    c语言字符串与数字转换函数

    C语言字符串与数字转换函数 C语言中提供了多种字符串与数字转换函数,以下是常用的几个函数: 1. atof() 函数:将字符串转换成浮点型数 atof() 函数的定义在stdlib.h头文件中,函数原型为:double atof(const ...

    数字转换为字符串

    特别是当需要将数字(整数、浮点数等)转换为字符串时,这一过程对于构建用户界面、生成报告或是进行网络通信尤为重要。C语言中的`sprintf`函数就是实现这种转换的一个强大工具。本文将深入探讨如何利用`sprintf`...

    C语言中常用的字符串处理函数

    此函数与`_strupr`相反,将`string`中的所有大写字母转换为小写字母,并返回转换后的字符串的指针。 12. **`strchr`**: 函数原型为`char* strchr(const char* string, int c);`。此函数在`string`中查找第一次出现...

    C语言字符串和数字转换函数

    - **返回值**: 返回指向已转换字符串的指针。 - **示例代码**: ```c #include #include int main() { double num = 123.456; char buffer[20]; char *result = gcvt(num, 4, buffer); printf("转换后的...

    c语言数字字符串转化.pdf

    C语言数字字符串转换大全 在C语言中,数字字符串转换是非常重要的,以下是常用的数字字符串转换函数: 1. atof():将字符串转换成浮点型数 atof()函数可以将一个字符串转换成浮点型数。该函数会扫描参数字符串,...

    数字字符串转整形c语言代码

    把一个数字字符串转换为整形,数字可以是大于2147483648的数字,可以是负数也可以是正数

    数值转字符串函数

    在计算机编程中,经常需要将数值类型(如整数或浮点数)转换为字符串类型,以便于进行文本处理、输出展示或者网络传输等操作。本文将详细介绍两个用于实现这种转换的函数:`toStr()` 和 `floatToStr()`。这两个函数...

    C语言整形转字符串

    其中,“C语言整形转字符串”是开发者经常遇到的一个场景,涉及到如何将整型数据(int)转换为字符串(char数组)。本文将详细介绍一种实现方法,并对代码进行逐行解析。 ### 核心知识点 #### 1. 整形与字符串的...

    C语言字符、字符串定义及相关函数

    函数strtol、strtoul、strtod和atoi分别用于将字符串转换为长整型、无符号长整型、双精度浮点型和整数型数值。在使用这些转换函数时,需要提供一个指针参数来接收转换终止的位置,以便处理字符串中非数字字符的存在...

Global site tag (gtag.js) - Google Analytics