一些C/C++中的函数
2016-06-15 10:30
204 查看
项目中使用到的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( )
htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为:高位字节存放在内存的低地址处。
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序方式。
![](https://img-blog.csdn.net/20160615110132003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
实例:
而我们常用的 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
即可。
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( )
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
即可。
相关文章推荐
- 一些C/C++中的函数
- C++中 char *s 和 char s[] 的区别
- sizeof学习
- C++字符串向量和数组
- 2016年06月14日学习日记c语言结构体
- C++ 指针引用
- 2016年06月13日学习日记c语言字符串
- fstream引用作为函数返回值问题
- C++笔记4
- Ubuntu 安装 gcc/g++ 5.0
- zip压缩 中文乱码解决方法
- 2016年06月12日学习日记c语言指针
- 2016年06月08日学习日记c语言指针
- 2016年06月06日学习日记c语言指针
- 简析C++序列化
- C++ 类模板的定义和使用
- 0603 c语言函数
- 0602 c语言操作符和表达式
- 0601 c语言概述
- C++ 引用做左值