一些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指定的文件中,直到出现字符串结束(‘\0’)为止。关于参数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 即可。



posted on 2016-06-15 10:30  岚之山  阅读(178)  评论(0编辑  收藏  举报

导航