在linux中可用经过 man 3 OR man 2 OR man来查看函数有什么参数和须要引入什么头文件java
$ man perror
$ man 3 printf
$ man 2 open
复制代码
char *basename(char *path);linux
此函数在libgen.h头文件中,使用时需引入头文件nginx
#include <libgen.h>bash
basename函数能够返回路径最后一个路径分隔符以后的内容,直白一点就是输出 “文件名”函数
#include <libgen.h>
// = 号后面是输出的结果,可用 char 类型接收返回值
basename("/usr/local/nginx/conf/nginx.conf") = nginx.conf
basename("./a.out") = a.out
basename("/usr/include/libgen.h") = libgen.h
复制代码
char *dirname(char *path);ui
此函数在libgen.h头文件中,使用时需引入头文件spa
#include <libgen.h>指针
dirname函数能够返回文件所在路径code
#include <libgen.h>
// = 号后面是输出的结果,可用 char 类型接收返回值
basename("/usr/local/nginx/conf/nginx.conf") = /usr/local/nginx/conf
basename("./a.out") = .
basename("/usr/include/libgen.h") = /usr/include
复制代码
int getopt(int argc, char * const argv[], const char *optstring);字符串
#include <unistd.h>
能够经过设置的optstring短参数指定‘:’ or ‘::’ or 不写‘:’获取带有‘-’后面的额外参数,具体可看例子理解这个函数,额外参数由全域变量 optarg 接收
#include <unistd.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
// 接收返回值
int ret;
// while 循环是在调用脚本的时候循环获取参数,直到获取到-1时退出,也就是脚本后面可跟多个参数。不然只能跟一个就退出了
while((ret = getopt(argc,argv,"a:bc::")) != -1)
{
switch(ret)
{
case 'a':
printf("The argument of -a is: %s \n", optarg);
break;
case 'b':
printf("此参数没有额外参数\n");
break;
case 'c':
printf("The argument of -c is: %s \n", optarg);
break;
default:
return 0;
}
}
return 0;
}
复制代码
把上述例子编译后看一下使用方式有什么区别
# 不带参数使用脚本,什么也没有,没有输出也没有报错
$ ./a.out
# 带 -a 参数使用 可是后面不加额外参数
$ ./a.out -a
报错信息:./a.out: option requires an argument -- 'a'
# 报错信息能够看出咱们在使用-a 参数时,须要在后面再加一个额外参数,那就加上一个参数试试看是否能正常输出内容
$ ./a.out -a 0x05
The argument of -a is: 0x05
# 再次使用-b参数
$ ./a.out -b
此参数没有额外参数
# 一条命令能够把全部参数加上,我这个-c不知道什么缘由 获取不到值
$ ./a.out -a 0x50 -b -c
复制代码
上述实验可证实咱们能够经过getopt函数得到额外参数,也就是根据不一样参数获取不一样的值。
int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr);
#include <stdlib.h>
把字符串转变成Integer类型 转换为long类型 转换为 long long类型
#include <stdlib.h>
#include <stdio.h>
int main(){
int ret;
char * string = "10";
ret = atoi(string);
printf("value is : %d \n", ret);
return 1;
}
复制代码
下面的输出结果,能够看到使用整型的占位符能够原样输出,可是若是你不先转换为整型去输出string指针变量的话,输出的就不是这个数了,其余两个函数跟这个相似,跟java中的Integer.valueof函数差很少
value is 10
复制代码