C编程中遇到的一些函数

1、int snprintf(char *str, size_t size, const char *format, ...);

作用:将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至str中。

所需头文件:#include <stdio.h>

2、int system(const char * command);

作用:执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。

所需头文件:#include <stdlib.h>

3、int access(const char *filenpath, int mode);

作用:确定文件或文件夹的访问权限。

#define R_OK 4 /* Test for read permission. */

#define W_OK 2 /* Test for write permission. */

#define X_OK 1 /* Test for execute permission. */

#define F_OK 0 /* Test for existence. */

R_OK 只判断是否有读权限

W_OK 只判断是否有写权限

X_OK 判断是否有执行权限

F_OK 只判断是否存在

所需头文件:#include <unistd.h>

4、void (*signal(int sig, void (*func)(int)))(int)

作用:设置一个函数来处理信号,即带有 sig 参数的信号处理程序。

所需头文件:#include <signal.h>

5、void * dlopen( const char * pathname, int mode);

作用:打开一个动态链接库,并返回动态链接库的句柄

mode:

1)解析方式

RTLD_LAZY:在dlopen返回前,对于动态库中的未定义的符号不执行解析(只对函数引用有效,对于变量引用总是立即解析)。

RTLD_NOW: 需要在dlopen返回前,解析出所有未定义符号,如果解析不出来,在dlopen会返回NULL,错误为:undefined symbol: xxxx.......

2)作用范围,可与解析方式通过“|”组合使用。

RTLD_GLOBAL:动态库中定义的符号可被其后打开的其它库解析。

RTLD_LOCAL: 与RTLD_GLOBAL作用相反,动态库中定义的符号不能被其后打开的其它库重定位。如果没有指明是RTLD_GLOBAL还是RTLD_LOCAL,则缺省为RTLD_LOCAL。

所需头文件:#include <dlfcn.h>

3)作用方式

RTLD_NODELETE: 在dlclose()期间不卸载库,并且在以后使用dlopen()重新加载库时不初始化库中的静态变量。这个flag不是POSIX-2001标准。

RTLD_NOLOAD: 不加载库。可用于测试库是否已加载(dlopen()返回NULL说明未加载,否则说明已加载),也可用于改变已加载库的flag,如:先前加载库的flag为RTLD_LOCAL,用dlopen(RTLD_NOLOAD|RTLD_GLOBAL)后flag将变成RTLD_GLOBAL。这个flag不是POSIX-2001标准。

RTLD_DEEPBIND:在搜索全局符号前先搜索库内的符号,避免同名符号的冲突。这个flag不是POSIX-2001标准。

6、void*dlsym(void*handle,constchar*symbol)

作用:根据 动态链接库 操作句柄(handle)与符号(symbol),返回符号对应的地址。使用这个函数不但可以获取函数地址,也可以获取变量地址。

返回值:void* 指向函数的地址,供调用使用。

所需头文件:#include <dlfcn.h>

7、int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);

作用:支持长选项的命令行解析

optstring:

        表示短选项字符串。

        形式如“a:b::cd:“,分别表示程序支持的命令行短选项有-a、-b、-c、-d,冒号含义如下:

        1)只有一个字符,不带冒号——只表示选项, 如-c 

        2)一个字符,后接一个冒号——表示选项后面带一个参数,如-a 100

        3)一个字符,后接两个冒号——表示选项后面带一个可选参数,即参数可有可无, 如果带参数,则选项与参数直接不能有空格,形式应该如-b200

所需头文件:#include <getopt.h>

8、extern char *strdup(char *s);

作用: 将字符串拷贝到新建的位置处

所需头文件:#include <string.h>

9、int atoi(const char *str);

作用:把参数 str 所指向的字符串转换为一个整数

所需头文件:#include <stdlib.h>

10、int chdir(const char *path);

作用:更改当前工作目录

返回值:成功返回0 ,失败返回-1

所需头文件:#include <unistd.h>

11、extern char *strdup(char *s);

作用:将字符串拷贝到新建的位置处

返回值:返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。

所需头文件:#include <string.h>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值