zoukankan      html  css  js  c++  java
  • C语言字符篇(一)字符串转换函数

     
    #include <stdlib.h>  
    double atof(const char *nptr); 
    将字符串转换成双精度浮点数
    int atoi(const char *nptr); 
    将字符串转换成整形数
    long atol(const char *nptr); 将字符串转换成长整型数
    double strtod(const char *nptr, char **endptr);            
    将字符串转换成双精度浮点数
    long int strtol(const char *nptr, char **endptr, int base); 将字符串转换成长整型数
    unsigned long int strtoul(const char *nptr, char **endptr, int base); 将字符串转换成无符号长整型数
    char *gcvt(double number, int ndigit, char *buf); 将浮点数转换成字符串,取四舍五入
    api介绍(学习方法)如何看懂一个api
     
    double atof(const char *nptr);  将字符串转换成双精度浮点数
    看函数,
    首先看参数  const char *nptr,根据之前学习的基础,首先看到这是一个指针,而且有const char,代表这是一个字符串指针 .
    所以要得到两点结论:
    1. 传进来的参数是一个指针,字符串的指针
    2. 传进来的参数是受const保护的,也就是说,在这个函数里面,它的内容将不会发生修改 .进函数前是什么样子,    函数结束后还是什么样子.
    然后再看返回值 double
    说明在调用这个函数的时候,我们需要声明一个变量得是double 类型的来接收这个函数反回的值.
    atoi atof atol 这三个函数的参数是字符型指针常量,返回值 为 数值字符串 转化后的数值.

     

    int atoi(const char *nptr); 
    -------------------------------------------------------
                int main(void) {
     
    
                    const char *buf="365.3day";
                    int day;
                    day = atoi(buf);
                    printf("%d
    ",day); //365
     
    
                }
    -------------------------------------------------------
    View Code
    double strtod(const char *nptr, char **endptr);
    -------------------------------------------------------
     
    
                int main(int argc, char **argv) {
                    const char *buf="456.78秒";
                    double sec;
                    //因为要接收一个字符串指针,所以就定义一个字符串指针
                    char *p;
     
    
                    //因为参数传递是拷贝的概念,值传递只是拷贝副本,并不影响本身,所以把参数当做修改入口的话,要取它的地址传递
                    //指针变量p 的地址是 &p; 跟普通变量 a 的地址 &a是一样的.
                    //而且p是指针,函数strtod 的形参刚好也是要求的char **p;和实参设计不谋而合 .
                    sec = strtod(buf,&p);
                    printf("sec is %0.2f
    ",sec);   //sec is 456.78
                    printf("left str is: %s
    ",p);  //left str is: 秒
     
    
                }
     
    
    -------------------------------------------------------
    View Code
    所以这个函数的功能就是将字符串数字开头的部分通过返回值返回,然后将剩下的非数字部分的指针赋给指针*p,这样*p就指向非数字部分,可以输出.
    long int strtol(const char *nptr, char **endptr, int base);             将字符串转换成长整型数:
    unsigned long int strtoul(const char *nptr, char **endptr, int base);   将字符串转换成无符号长整型数:
    //参数 int base是规定转换数字的进制数
    int main(int argc, char **argv) {
     
    
        const char *buf="1234567sec";
     
    
        long int sec;   //用于接收返回值
        char *tmp;      //指向剩下字符串指针
        int base = 10;  //10进制
     
    
        sec=strtol(buf,&tmp,base);
     
    
        printf("sec is: %ld
    ",sec);    //1234567
        printf("left src is: %s
    ",tmp);    //left src is: sec
     
    
        return 0;
    }
     
    
    -------------------------------------------------------
    View Code
  • 相关阅读:
    轻轻松松教你写日志-超级简单
    JAVA实现KNN分类
    怎样给filter加入自己定义接口
    设计模式之Visitor模式(笔记)
    Leet Code OJ 237. Delete Node in a Linked List [Difficulty: Easy]
    在C#中怎样推断线程当前所处的状态
    leetCode 83.Remove Duplicates from Sorted List(删除排序链表的反复) 解题思路和方法
    谈谈源码管理那点事儿(一)——源码管理十诫(转)
    安装gi的时候回退root.sh的运行
    Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
  • 原文地址:https://www.cnblogs.com/kmist/p/10088918.html
Copyright © 2011-2022 走看看