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
複製代碼
相關文章
相關標籤/搜索