zoukankan      html  css  js  c++  java
  • 常用函数

    clock() 

    头文件 #include <ctime>

    获取当前时钟计数,一般都是ms为单位,也可以通过CLOCKS_PER_SEC宏计算当前second时间,比如:

    printf("%d",clock()/CLOCKS_PER_SEC);

    sin()

    函数sin的参数是使用弧度制的,需要将角度转换成弧度

    比如使用简单的带参宏:

    #define j2h(x) (3.1415926*(x)/180.0)
    sin(j2h(90))

    sprintf

    sscanf返回值为1表示读到了一个有效数据,如果读取到2个有效数据,则返回2

    将数据输出到字符串,例如:

    sprintf(s, "%d", 123); //产生"123"

    sscanf

    从字符串获取数据,例如:

    sscanf("12345","%d",&data); 

    (浮点数的话只支持float型)

    strstr

    从字符串查找子串是否存在,若存在则返回所在位置的char *指针,不存在返回NULL,例如:

    char str[]="ABCDEFG";
    char *presult;
    presult= strstr(str,"BCD");  //查找到有BCD子串,所以*presult="BCDEFG";

    strchr

    和strstr函数性质一样,不过该函数是查找字符是否存在

    char *strchrnul(const char *s, int c);

     perror

    打印错误信息,例如在arm机上运行:

    iconv_t cd = iconv_open ("GBK", "UTF-8");
    if (cd == (iconv_t)-1) 
    { 
    perror ("iconv_open"); 
    }

    打印:

    iconv_open: Invalid argument

    参考:http://blog.csdn.net/xp5xp6/article/details/52513122

    iconv

    参考https://www.cnblogs.com/etangyushan/p/3753847.html

    #include <iconv.h>

    有3个常用函数

    1

    iconv_t iconv_open (const char* tocode, const char* fromcode);

    打开转换编码的句柄,也就是类似文件描述符.

    返回值: 返回一个句柄iconv_t 格式,若返回-1表示打开失败

    例如:

    iconv_t cd = iconv_open ("GBK//IGNORE", "UTF-8");  //utf-8转GBK, 
    //IGNORE  :遇到无法转换字符跳过

    2

    size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

    根据第一个参数iconv_t cd句柄来转换格式.(需要调用调用iconv_open 成功后,才能调用iconv )

    • inbuf :需要转换的字符串
    • inbytesleft :存放还有多少字符没有转换
    • outbuf:存放转换后的字符串
    • outbytesleft :存放转换后,tempoutbuf剩余的空间

    3

     iconv_close (iconv_t cd);

    转换成功后,关闭iconv_t cd句柄 

    strtoul  (string to unsigned long)

    头文件:#include <stdlib.h>

    作用: 将参数nptr字符串根据参数base来转换成无符号的长整型数。

    函数原型:

    unsigned long strtoul(const char *nptr,char **endptr,int base );
    //*nptr:字符串
    //endptr:存放遇到什么条件终止的,填入0也行
    //base:要转换的数据二进制类型, 从2至36,或0.当base==0,表示自动识别

    返回值

    返回转换后的长整型数

    实例:

    #include "stdio.h"
    #include <stdlib.h>
    int main()
    {
           int x;
           char str[10]; 
           char *s1;
                  while(1)
                  {
                          scanf("%s",&str);          
                          x=strtoul(str,&s1,0);       
                          printf("strtoul: %d
    ",x);
                          printf("endptr:%s
    ",s1);
                  }
    }

    输入1234ABCD

    打印:

    strtoul: 1234
    endptr: ABCD

    getopt  (Parse command-line options分析命令行参数)

    #include <unistd.h>
    
    int getopt(int argc, char * const argv[],const char *optstring);        //c: counter   v:vector
    
    
    extern char *optarg;        //指向当前选项参数的指针
    extern int optind;            //(option index)下一次调用getopt时,从optind存储的位置处重新开始检查选项。 

    返回值

    • 若选项被成功找到,则返回选项字符值,
    • 如果所有命令行成功解析完,则返回-1
    • 如果解析到不正确的选项或者没有跟选项的参数时,则返回?

    *optstring选项在getopt定义里分为三种:

    1. 不带参数的选项

    比如:

    rm    work/   -rf      //r和f选项后面就没跟参数

    对应的getopt函数就是:

      ch=getopt(argc, argv,"rf");

    2. 必须带参数的选项,在单个字符后加一个冒号,然后跟的参数可以紧跟或者空格隔开

    比如:

    tar  -xjf   1. tar.bz2    -C ./tmp       //-C 后面跟着一个参数

    对应的getopt函数就是:

      ch=getopt(argc, argv,"xjf:C:"); //xj后面没有冒号,所以不跟参数,而f和C后面有冒号,所以必须加参数

     3. 可带参数的选项,在单个字符后加两个冒号 ,该选项后面,如果跟上参数,则必须紧跟,不能以空格隔开

    参考代码如下:

    #include "stdio.h" 
    #include <unistd.h>
    
    extern char *optarg; //指向当前选项参数的指针
    extern int optind; //(option index)下一次调用getopt时,从optind存储的位置处重新开始检查选项。 
    int main(int argc,char *argv[])
    { 
      char ch;
    
      //ab:不带参数的选项,c:必须带参数的选项 d:可带参数的选项
      while(( ch=getopt(argc, argv,"abc:d::"))!=-1) 
      { 
      switch(ch) 
      { 
       case 'a': 
      { 
        printf("a:
    "); 
        printf("optarg: %s
    ",optarg);
        printf("optarg: %d
    ",optind);
        break; 
      } 
      case 'b': 
      { 
        printf("b:
    "); 
        printf("optarg: %s
    ",optarg);
        printf("optarg: %d
    ",optind);
        break; 
      } 
      case 'c': 
      { 
        printf("c:
    "); 
        printf("optarg: %s
    ",optarg);
        printf("optarg: %d
    ",optind);
        break; 
      }
      case 'd':
      {
        printf("d:
    ");
        printf("optarg: %s
    ",optarg);
        printf("optarg: %d
    ",optind);
        break;
      }
      default :
      {
        printf("%c:
    ",ch);
        printf("optarg: %s
    ",optarg);
        printf("optarg: %d
    ",optind);
        break;
      }
       } 
      }
      return 0;
    }

    打印输出:

    从下图可以看到, 由于m没有紧跟着可带参数选项d,所以为null

     

  • 相关阅读:
    Hibernate中的HQL
    hibernate配置数据库连接池三种用法
    Hibernate的延迟检索和立即检索
    Hibernate关系映射中的注解
    Hibernate的多种关系映射(oto、otm、mtm)
    自然主键和代理主键的区别
    Hibernate的xml方法配置和操作代码
    Hibernate简介
    VirtualBox从USB设备(PE)启动图文教程
    属性动画
  • 原文地址:https://www.cnblogs.com/lifexy/p/8540607.html
Copyright © 2011-2022 走看看