当前位置 博文首页 > 文章内容

    C语言中字符串与各数值类型之间的转换方法

    作者:shunshunshun18 栏目:未分类 时间:2021-03-23 14:42:22

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    C语言的算法设计中,经常会需要用到字符串,而由于c语言中字符串并不是一个默认类型,其标准库stdlib设计了很多函数方便我们处理字符串与其他数值类型之间的转换。

    首先放上一段展示各函数使用的代码,大家也可以copy到自己的机器上运行观察

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
      int num=183;
      char str[3];
    
      //itoa函数将整型转换为字符串数值类型 
      itoa(num,str,10);
      printf("%s\n",str);
    
      //atoi函数将字符串转化为整形数值类型 
      int nums=atoi(str); 
      printf("%d\n",nums);
    
      double dou=12.432;
      char c[80];
      char cc[80];
      //sprintf函数可以实现其他数值类型到string类型的转换
      sprintf(c,"%2.2f",dou);
      //还可以实现多个数值和字符串之间的任意连接,反正最后转换成字符串 
      sprintf(cc,"%2.3f%s",dou,"you");
      printf("%s\n",c);  
      printf("%s\n",cc);
    
      //将单精度或者双精度类型转化为字符串的fcvt和gcvt函数 
      //fcvt并不能显示小数点位置 
      double fcvtnum=123.456;
      char *fcvtstr;
      int decdot,sign;
      fcvtstr=fcvt(fcvtnum,2,&decdot,&sign);
      printf("%s\n",fcvtstr); 
    
      //gcvt能够显示小数点,其第二个参数表示有效位数字 
      char fcvtstrg[20];
      gcvt(fcvtnum,6,fcvtstrg);
      printf("%s\n",fcvtstrg);
    
      // strtod和atof能将字符串转化为双精度和单精度类型 
      printf("字符串转化为双精度浮点数%f\n单精度浮点数%f\n",
        strtod(fcvtstrg,NULL),atof(fcvtstrg)); 
    
      return 0;
    }

    下面对上面代码用到的各函数分类整理与描述

    字符串转化为其他类型

    • atoi(char *str) :只有一个待转化字符串参数,返回整型数
    • atof(char *str) :只有一个待转化字符串参数,返回单精度浮点数
    • strtod(char *str,char *end) :一个待转化的字符串参数,和一个转化结束的字符串参数,一般将其置为NULL,返回双精度浮点数

    其他数值类型转化为字符串

    • itoa(int num,char *str,10) :整形转化为字符串,第一个参数为待转化的整型值num,第二参数为转化后的结果存储字符串,第三个为转化的进制,无返回值
    • fcvt(float num,int ndigits,*decdot,*sign) :浮点型转化为字符串,第一个参数为待转化的浮点数num,第二个参数为保留的小数点后面的位数,第三个存储结果中小数点的位置,第四个参数存储数值的正负,返回转化后字符串的指针,但是字符串中并没有小数点(如123.456转化为123456),所以一般就不要用啦
    • gcvt(float num,int n,char *str) :浮点型转化为字符串,第一个参数为待转化的浮点数num,第二个参数为保留的有效位数(不是小数点后的哦),第三个参数为存储结果的字符串指针,无返回值
    • sprintf(char *str, format,float num[,float num2…]) :其他各种类型都可以通过sprintf转化为字符串str,其中format表示转化前保留的格式,并且支持多个数据类型一起转化实现连接功能