当前位置:首页 >> 数学 >>

c语言 数字与字符串之间的相互转化函数


atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toascii(将整型数转换成合法的 ASCII 码字符) toupper(将小写字母转换成大写字母) tolower(将大写字母转换成小写字母) atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数 nptr 字符串,跳过前面的空格字符,直到遇上数 字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。参数 nptr 字符串可包含正负 号、小数点或 E(e)来表示指数部分,如 123.456 或 123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用 strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串 a 与字符串 b 转换成数字后相加*/ #include<stdlib.h> main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include<stdlib.h> 定义函数 int atoi(const char *nptr); 函数说明 atoi()会扫描参数 nptr 字符串,跳过前面的空格字符,直到遇上数 字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。 返回值 返回转换后的整型数。 附加说明 atoi()与使用 strtol(nptr,(char**)NULL,10);结果相同。 范例 /* 将字符串 a 与字符串 b 转换成数字后相加*/ #include<stdlib.h> mian() { char a[]=”-100”;

char b[]=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行 c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #include<stdlib.h> 定义函数 long atol(const char *nptr); 函数说明 atol()会扫描参数 nptr 字符串,跳过前面的空格字符,直到遇上数 字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。 返回值 返回转换后的长整型数。 附加说明 atol()与使用 strtol(nptr,(char**)NULL,10);结果相同。 范例 /*将字符串 a 与字符串 b 转换成数字后相加*/ #include<stdlib.h> main() { char a[]=”1000000000”; char b[]=” 234567890”; long c; c=atol(a)+atol(b); printf(“c=%d\n”,c); } 执行 c=1234567890 gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ecvt,fcvt,sprintf 表头文件 #include<stdlib.h> 定义函数 char *gcvt(double number,size_t ndigits,char *buf); 函数说明 gcvt()用来将参数 number 转换成 ASCII 码字符串,参数 ndigits 表示 显示的位数。gcvt()与 ecvt()和 fcvt()不同的地方在于,gcvt()所 转换后的字符串包含小数点或正负符号。若转换成功,转换后的字 符串会放在参数 buf 指针所指的空间。 返回值 返回一字符串指针,此地址即为 buf 指针。 附加说明 范例 #include<stdlib.h> main() { double a=123.45; double b=-1234.56; char *ptr; int decpt,sign; gcvt(a,5,ptr);

printf(“a value=%s\n”,ptr); ptr=gcvt(b,6,ptr); printf(“b value=%s\n”,ptr); } 执行 a value=123.45 b value=-1234.56 strtod(将字符串转换成浮点数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include<stdlib.h> 定义函数 double strtod(const char *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() { char a[]=”1000000000”; char b[]=”1000000000”; char c[]=”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> 定义函数 long int strtol(const char *nptr,char **endptr,int base); 函数说明 strtol()会将参数 nptr 字符串根据参数 base 来转换成长整型数。参 数 base 范围从 2 至 36,或 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() { char a[]=”1000000000”; char b[]=”1000000000”; char c[]=”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> 定义函数 unsigned long int strtoul(const char *nptr,char **endptr,int base); 函数说明 strtoul()会将参数 nptr 字符串根据参数 base 来转换成无符号的长整 型数。参数 base 范围从 2 至 36,或 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> 定义函数 int toascii(int c) 函数说明 toascii()会将参数 c 转换成 7 位的 unsigned char 值,第八位则会被 清除,此字符即会被转成 ASCII 码字符。 返回值 将转换成功的 ASCII 码字符值返回。 范例 #include<stdlib.h>

main() { int a=217; char b; printf(“before toascii () : a value =%d(%c)\n”,a,a); b=toascii(a); printf(“after toascii() : a value =%d(%c)\n”,b,b); } 执行 before toascii() : a value =217() after toascii() : a value =89(Y) tolower(将大写字母转换成小写字母) 相关函数 isalpha,toupper 表头文件 #include<stdlib.h> 定义函数 int tolower(int c); 函数说明 若参数 c 为大写字母则将该对应的小写字母返回。 返回值 返回转换后的小写字母,若不须转换则将参数 c 值返回。 附加说明 范例 /* 将 s 字符串内的大写字母转换成小写字母*/ #include<ctype.h> main() { char s[]=”aBcDeFgH12345;!#$”; int i; printf(“before tolower() : %s\n”,s); for(i=0;I<sizeof(s);i++) s[i]=tolower(s[i]); printf(“after tolower() : %s\n”,s); } 执行 before tolower() : aBcDeFgH12345;!#$ after tolower() : abcdefgh12345;!#$ toupper(将小写字母转换成大写字母) 相关函数 isalpha,tolower 表头文件 #include<ctype.h> 定义函数 int toupper(int c); 函数说明 若参数 c 为小写字母则将该对映的大写字母返回。 返回值 返回转换后的大写字母,若不须转换则将参数 c 值返回。 附加说明 范例 /* 将 s 字符串内的小写字母转换成大写字母*/ #include<ctype.h> main() { char s[]=”aBcDeFgH12345;!#$”; int i; printf(“before toupper() : %s\n”,s);

for(i=0;I<sizeof(s);i++) s[i]=toupper(s[i]); printf(“after toupper() : %s\n”,s); } 执行 before toupper() : aBcDeFgH12345;!#$ after toupper() : ABCDEFGH12345;!#$ C 语言中字符串和数字的相互转换(2008-10-21 16:47:12)

C 语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等) 的数字转换为字符 串。以下是用 itoa()函数将整数转换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number 'num' is %d and the string 'str' is %s. \n" , num, str); } itoa()函数有 3 个参数: 第一个参数是要转换的数字,第二个参数是要写入 转换结果的目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为 10。10:十进制;2:二进制... itoa 并不是一个标准的 C 函数,它是 Windows 特有的,如果要写跨平台的 程序,请用 sprintf。 是 Windows 平台下扩展的, 标准库中有 sprintf, 功能比这个更强, 用法跟 printf 类似: char str[255]; sprintf(str, "%x", 100); //将 100 转为 16 进制表示的字符串。 下列函数可以将整数转换为字符串: ---------------------------------------------------------函数名 作 用 ---------------------------------------------------------itoa() 将整型值转换为字符串 itoa() 将长整型值转换为字符串 ultoa() 将无符号长整型值转换为字符串

一 atoi 把字符串转换成整型数 例程序: #include <ctype.h> #include <stdio.h> int atoi (char s[]); int main(void ) { char s[100]; gets(s); printf("integer=%d\n",atoi(s)); return 0; } int atoi (char s[]) { int i,n,sign; for(i=0;isspace(s[i]);i++)//跳过空白符 ; sign=(s[i]=='-')?-1:1; if(s[i]=='+'||s[i]==' -')//跳过符号 i++; for(n=0;isdigit(s[i]);i++) n=10*n+(s[i]-'0');//将数字字符转换成整形数字 return sign *n; } 二 itoa 把一整数转换为字符串 例程序: #include <ctype.h> #include <stdio.h> void itoa (int n,char s[]); //atoi 函数:将s转换为整形数 int main(void ) { int n; char s[100];

printf("Input n:\n"); scanf("%d",&n); printf("the string : \n"); itoa (n,s); return 0; } void itoa (int n,char s[]) { int i,j,sign; if((sign=n)<0)//记录符号 n=-n;//使 n 成为正数 i=0; do{ s[i++]=n%10+'0';//取下一个数字 }while ((n/=10)>0);//删除该数字 if(sign<0) s[i++]='-'; s[i]='\0'; for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出 printf("%c",s[j]); } ps:注意,有些平台不支持 itoa,其并非标准模板~~~慎用 在单片机中,常用到数字与字符的方法,在 C 中都是使用 itoa 函数,C51 也有这个函数,但是,8051 的 RAM 是很有限的,所以尽量避免使用 int 型,常 用的是 unsigned char。当需要转换成字符串时用 itoa 的话,还是有点浪费。 还是自力更生,自己写了一个,代码如下: typedef unsigned char BYTE; BYTE * ByteToStr(BYTE n) { BYTE str[4]; BYTE * pStr; pStr = str; if (n>99) { *pStr = n/100; n %= 100; *pStr += '0'; pStr ++ ; *pStr = n/10;

n %= 10; *pStr += '0'; pStr ++ ; } if (n>9) { *pStr = n/10; n %= 10; *pStr += '0'; pStr ++ ; } if (n<10) { *pStr = n + '0'; pStr ++; } *pStr = 0; return str; } 用了 5Byte 内存,不知是否精简,先用着再说!String 转 unsigned char 的要反过来先减'0'再乘,不过要检查是否小于等于 255。等写好了再放上来


赞助商链接
相关文章:
C语言字符串与整数转换的函数
C语言字符串与整数转换的函数 - C 语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换字符串。 以下是用 itoa()函数将整数转换为...
C语言各种数值类型转换函数
C 语言各种数值类型转换函数 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(...
请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(...
请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。 例如,若输入字符串“-1234”,则函数把它...
C语言字符串函数实现源码汇总
C语言字符串函数实现源码汇总_计算机软件及应用_IT/计算机_专业资料。C语言 ...-或数字,非法返回 0 //这里就是转换,是数学的问题就不解释了 while(*str>=...
请编写一个函数fun(),它的功能是将一个数字字符串转换...
请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。 例如,若输入字符串“-1234”,则函数把它...
c语言数字转化字符串的函数及用法
c语言数字转化字符串的函数及用法 - 我们常用到的有以下几种: 1、itoa 功能:把一整数转换字符串 用法:char *itoa(int value, char *string, ...
C语言中常见的功能函数
C 语言中常见的功能函数(应掌握的编程) 1、 两个变量值的交换 void exchang(...(char ch) /*判断是否是数字字符*/ {if(ch>=?0?&&ch<=?9?) return 1...
c语言字符串函数使用
c语言字符串函数使用_计算机软件及应用_IT/计算机_专业资料。c语言字符串函数的...一次出错的信息(仅仅只是数字,通过 strerror()可以将数字转换字符串形式显示...
C语言函数编程题
C语言函数编程题_计算机软件及应用_IT/计算机_专业资料。C语言函数编程题 ...11. 编写函数,输入四个数字的字符串存放到字符数组当中,在每两个数字之间加入...
C语言字符串操作总结大全(超详细)
字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串数值类型的转换 strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针...
更多相关文章: