tag 标签: 数据类型转换

相关博文
  • 热度 21
    2012-10-18 14:17
    3453 次阅读|
    0 个评论
    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转换成数字后相加*/      #includestdlib.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 表头文件 #includestdlib.h 定义函数 int atoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。  返回值 返回转换后的整型数。 附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。   范例 /* 将字符串a 与字符串b转换成数字后相加*/      #includestdlib.h      mian()      {      char a =”456”;      int c;      c=atoi(a)+atoi(b);      printf(c=%d\n”,c);      }   执行 c=356   atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #includestdlib.h 定义函数 long atol(const char *nptr); 函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。  返回值 返回转换后的长整型数。 附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。   范例 /*将字符串a与字符串b转换成数字后相加*/      #includestdlib.h      main()      {      char a =” 234567890”;      long c;      c=atol(a)+atol(b);      printf(“c=%d\n”,c);      }   执行 c=1234567890 gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ecvt,fcvt,sprintf 表头文件 #includestdlib.h 定义函数 char *gcvt(double number,size_t ndigits,char *buf); 函数说明 gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。  返回值 返回一字符串指针,此地址即为buf指针。 附加说明   范例 #includestdlib.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 表头文件 #includestdlib.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 进制转换成数字*/      #includestdlib.h      mian()      {      char a =”1000000000”;      char c =”1000000000”;      char b =”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 表头文件 #includestdlib.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 表头文件 #includectype.h 定义函数 int toascii(int c) 函数说明 toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。  返回值 将转换成功的ASCII码字符值返回。   范例 #includestdlib.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 表头文件 #includestdlib.h 定义函数 int tolower(int c); 函数说明 若参数c为大写字母则将该对应的小写字母返回。 返回值 返回转换后的小写字母,若不须转换则将参数c值返回。 附加说明   范例 /* 将s字符串内的大写字母转换成小写字母*/      #includectype.h      main()      {      char s =tolower(s );      printf(“after tolower() : %s\n”,s);      }   执行 before tolower() : aBcDeFgH12345;!#$      after tolower() : abcdefgh12345;!#$       toupper(将小写字母转换成大写字母) 相关函数 isalpha,tolower 表头文件 #includectype.h 定义函数 int toupper(int c); 函数说明 若参数c为小写字母则将该对映的大写字母返回。 返回值 返回转换后的大写字母,若不须转换则将参数c值返回。 附加说明   范例 /* 将s字符串内的小写字母转换成大写字母*/      #includectype.h      main()      {      char s =toupper(s );      printf(“after toupper() : %s\n”,s);      }   执行 before toupper() : aBcDeFgH12345;!#$      after toupper() : ABCDEFGH12345;!#$ 1、itoa 功 能:把一整数转换为字符串 用 法:CHAR *itoa(int VALUE, CHAR *string, int radix); 详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: VALUE: 待转化的整数。 radix: 是基数的意思,即先将VALUE转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。 * string: 保存转换后得到的字符串。 返回值: CHAR * : 指向生成的字符串, 同*string。 备注:该函数的头文件是"stdlib.h" 2、ltoa 功 能:把一长整形转换为字符串 用 法:CHAR *ltoa(long VALUE, CHAR *string, int radix); 详细解释:itoa是英文long integer to array(将long int长整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: VALUE: 待转化的长整型数。 radix: 是基数的意思,即先将VALUE转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。 * string: 保存转换后得到的字符串。 返回值: CHAR * : 指向生成的字符串, 同*string。 备注:该函数的头文件是"stdlib.h" 3、ultoa 功 能:把一无符号长整形转换为字符串 用 法:CHAR *ultoa(unsigned long VALUE, CHAR *string, int radix); 详细解释:itoa是英文unsigned long integer to array(将unsigned long int无符号长整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: VALUE: 待转化的无符号长整型数。 radix: 是基数的意思,即先将VALUE转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。 * string: 保存转换后得到的字符串。 返回值: CHAR * : 指向生成的字符串, 同*string。 备注:该函数的头文件是"stdlib.h" 4、gcvt 功 能:把浮点型数转换为字符串,取四舍五入 用 法:CHAR *gcvt(double VALUE, int ndigit, CHAR *buf); 详细解释:gcvt()用来将参数number转换成 ASCII 码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。 参 数: VALUE:待转化的浮点数。 ndigit:存储的有效数字位数。 *buf:结果的存储位置。 返回值: CHAR * :指向生成的字符串, 同*buf。 备注:该函数的头文件是"stdlib.h" 5、ecvt 功 能:将双精度浮点型数转换为字符串,转换结果中不包括十进制小数点 用 法:CHAR *ecvt(double VALUE, int ndigit, 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(double VALUE, int ndigit, int *decpt, int *sign); 详细解释:fcvt函数把一个双精度浮点数转换成一个字符串。VALUE参数是要转换的浮点数。参与转换的实际值保留的小数位数由ndigit决定。 只有数字才存储在该字符串中,小数点位置和VALUE符号在调用之后从decpt和sign获取。decpt参数指出给出小数点位置的整数值,它是从该字符串的开头位置计算的。0或负数指出小数点在第一个数字的左边。sign参数指出一个指出转换的数的符号的整数。如果该整数为0,这个数为正数,否则为负数。 参 数: VALUE:待转换的双精度浮点数 ndigit:转换的字符串中包含小数点后几位 *decpt:返回小数点在串中的位置 *sign:符号标志。 返回值: CHAR*:指向生成的字符串。 备注:该函数的头文件是"stdlib.h"   整型数据转换为字符串 Char msg for(i=0;i100;i++) { sprintf(msg3,"%x",0xabcddcba+i); strcat(msg,msg3); strcat(msg,","); } printf("send msg %s\n",msg);