zoukankan      html  css  js  c++  java
  • 一些C/C++中的函数


    项目中使用到的C/C++中的一些函数,记录下来加以理解和掌握。


    1、memset( )


           memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针

         void *memset(void *s, int ch, size_t n);

    函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

    memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法



     




    2、open( )



         打开文件函数,相关函数:read, write, fcntl, close, link, stat, umask, unlink, fopen。

    定义函数:
        int open(const char * pathname, int flags);
        int open(const char * pathname, int flags, mode_t mode);

    函数说明:参数 pathname 指向欲打开的文件路径字符串. 下列是参数flags 所能使用的旗标:


    O_RDONLY 以只读方式打开文件
    O_WRONLY 以只写方式打开文件
    O_RDWR 以可读写方式打开文件. 上述三种旗标是互斥的, 也就是不可同时使用, 但可与下列的旗标利用OR(|)运算符组合。


    3、strncpy( )


    strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h.

           char *strncpy(char *dest, const char *src, int n)

    解释:把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。



    4、strcpy( )


        顾名思义字符串复制函数:原型:extern char *strcpy(char *dest,char *src); 

    功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest(地址中存储的为复制后的新值)。

    要求:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。



    5、ioctl( )


           ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。

    它的参数个数如下:int ioctl(int fd, int cmd, …);

    其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。


    6、va_start( )


    va_start,函数名称,读取可变参数的过程其实就是在堆栈中,使用指针,遍历堆栈段中的参数列表,从低地址到高地址一个一个地把参数内容读出来的过程·


    7、vfprintf( )


    vfprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定的文件中,直到出现字符串结束(‘’)为止。关于参数format字符串的格式请参 考printf()。

    int vfprintf(FILE *stream, char *formatva_list param);

    失败则返回-1,错误原因存于errno中。


     

    8、htons( )

     

    htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为:高位字节存放在内存的低地址处。
    网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序方式。

    实例:
    而我们常用的 x86 CPU (intel, AMD) 电脑是 little-endian,也就是整数的低位字节放在内存的低字节处。举个例子吧。假定你的数据是0x1234,
    在网络字节顺序里 这个数据放到内存中就应该显示成
    addr addr+1
    0x12 0x34
    而在x86电脑上,数据0x1234放到内存中实际是:
    addr addr+1
    0x34 0x12
    htons 的用处就是把实际主机内存中的整数存放方式调整成网络字节顺序。
              ******************************************
    htonl、ntohl、ntohs的用法和意义相似
    ********************************************

    9、memcpy( )


    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

    函数原型:void *memcpy(void *dest, const void *src, size_t n);

    功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

    返回值:函数返回指向dest的指针。



    10、send( )


    send()用于向一个已经连接的socket发送数据,如果无错误,返回值为所发送数据的总数,否则返回SOCKET_ERROR。

    函数原型:int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int flags);

            s:一个用于标识已连接套接口的描述字。                               buf:包含待发送数据的缓冲区

            len:缓冲区中数据的长度。                                                     flags:调用执行方式。


    11、recv( )

     

    recv()是编程语言函数。

    函数原型:   int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags);

     s:一个用于标识已连接套接口的描述字。                               buf:缓冲区

     len:缓冲区长度。                                                                  flags:调用执行方式。


    12、getopt( )

    getopt()函数说明 getopt()用来分析命令行参数。

    getopt(argc, argv, "i:sc:p:uahd")

    参数argc和argv分别代表参数个数和内容,跟main()函数的命令行参数是一样的。

    参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数。如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息,并将全域变量optarg设为“?”字符,如果不希望getopt()打印出错信息,则只要将全域变量opterr设为0 即可。



  • 相关阅读:
    Zabbix客户端日志出现(Not all processes could be identified, 解决
    zabbix 本地编译安装
    redis 配置文件解释 以及集群部署
    Unix shell范例精解 课后题
    if __name__ == '__main__':用法
    爬取猫眼电影100榜单 代码
    CentOS编译安装软件过程中遇到zlib.h: No such file or directory
    Codeigniter添加Composer支持
    CodeIgniter composer.json安装第三类库操作
    使用composer命令加载vendor中的第三方类库 的方法
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467312.html
Copyright © 2011-2022 走看看