C语言函数的使用记录

在linux中可用经过 man 3 OR man 2 OR man来查看函数有什么参数和须要引入什么头文件java

$ man perror
$ man 3 printf
$ man 2 open
复制代码

函数

basename()

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
复制代码

dirname()

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
复制代码

getopt()

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函数得到额外参数,也就是根据不一样参数获取不一样的值。

atoi()

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
复制代码