在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
複製代碼