一些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 *format, va_list param);
失败则返回-1,错误原因存于errno中。
8、htons( )
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
即可。