Linux系統下C 標準庫函式

2021-10-24 16:54:39 字數 4129 閱讀 9487

標頭檔案:

#include

函式名作用isalnum()

測試字元是否為英文本母或數字

isalpha()

測試字元是否為英文本母

isascii()

測試字元是否為ascii碼字元

isblank()

測試字元是否為空白字元 包括空格 \r\n\t 符號

iscntrl()

測試字元是否為ascii碼的控制字元

isdigit()

測試是否為阿拉伯數字 16進製制會出現錯誤

isgraph()

測試字元是否為可列印字元 列印到紙上

islower()

測試字元是否為小寫英文本母

isupper()

測試字元是否為大寫英文本母

isprint()

測試字元是否為可列印字元 列印到螢幕上

isspace()

測試字元是否為空格字元

ispunct()

測試字元是否為標點符號或特殊符號

isxdigit()

測試字元是否為16進製制數字

標頭檔案:

#include

包含 資料轉換 隨機數 字符集的轉換

1)字串轉換成對應的數

函式名作用

atof()

將字串轉換成浮點型數

atoi()

將字串轉換成整型數 以前i=16位 l=32位

atol()

將字串轉換成長整型數 現在i=32位 l=64位

atoll()

將字串轉換成長整型數 ll=64位 部分系統不支援使用

strtol()

將字串轉換成整數

strtoul( )

將字串轉換成無符號整數

strtoll( )

將字串轉換成長整數(c++11標準及以上)

strtoull()

將字串轉換成無符號長整數(c++11標準及以上)

strtof()

將字串轉換成浮點數(c++11標準及以上)

strtod()

將字串轉換成雙精度數

strtold()

將字串轉換成長雙精度數(c++11標準及以上)

2)對應的數轉換成字串

整數同樣可以應用與下列函式

函式名作用

ecvt(double value,int ndigit,int* decpt,int *sign)

將浮點型數轉換成字串 ndgit指的是全部的有效位數 數量不足是在尾部補0

fcvt(double value,int ndigit,int* decpt,int *sign)

將浮點型數轉換為字串 ndigit 指的是小數點之後的有效位數 不足以0填滿

gcvt(double value,int ndigit,int *buffer)

將浮點型數轉換為字串 ndigit 指的是最大有效位數 不做任何處理

函式名作用

printf()

格式化輸出資料 輸出時需再引數之間加上分隔符 輸出時還需再引數的結尾加上 』 \n 』 才能正常輸出

vprintf()

格式化輸出資料 可變引數函式實現時使用

vsnprintf()

格式化字串複製 用法與snprintf()類似

vsprintf()

格式化字串複製 用法與sprintf()類似

sprintf()

格式化字串複製 多個變數拼接到乙個字串中

snprintf()

格式化字串複製 多個變數拼接到乙個字串中 多了字串大小引數

fprintf()

格式化輸出資料至檔案 用檔案記錄資料 可以不受緩衝區影響 資料量大時讀取速度慢

vfprintf()

格式化輸出資料至檔案

函式名作用

scanf()

格式化字串輸入 可用乙個變數記錄scanf()的返回值 1、空格是預設的分隔符 2、部分資料格式是可以自動正確分割的,但是整數和小數之間,需要手動分割(使用空格) 3、格式字串中的空格可有可無,但是如果使用了其他分隔符,則在輸入的時候,必須對應輸入分割符 4、待輸入變數,一定要取位址

sscanf()

格式化字串輸入

vfscanf()

格式化檔案字串輸入

fscanf()

格式化檔案字元輸入

格式引數

作用%d

整數輸入輸出引數

%u無符號整數

%l64位整數

%lld

64位整數

%f對應 float型別 在printf()中以doublue型別處理 在scanf()中以float型別處理 已常規方式顯示小數

%lf對應 doublue型別

%e指數形式表示小數

%g指數形成更短以指數形式表示 小數更短以小數形式表示

%s輸出乙個字串

%c輸入輸出乙個字元

1)linux許可權說明

linux許可權說明

作用s 提權和降權

設定使用者許可權

s 修改我當前組

設定組許可權

t僅所有者可刪除許可權

r 4讀取許可權

w 2寫入許可權

x 1執行許可權

第乙個字母表示

d 表明是乙個資料夾 l 表明是以乙個連線 其他方式表明是乙個普通檔案

第2-4個字母表示

所有者的許可權

第5-7個字母表示

所在組的許可權

第8-10個字母表示

其他組的許可權

對程序也是有效

對記憶體也是有效

linux下 一切皆檔案

標頭檔案:

#include

#include

2)取得使用者識別碼

函式名作用

geteuid()

取得有效的使用者識別碼

getuid()

取得真實的使用者識別碼

真實的使用者:當下程式所擁有的使用者狀態

有效的使用者:程式啟動時所擁有的使用者狀態

一般呼叫時呼叫真實使用者

程式在執行的時候,使用者許可權是可以發生改變的

uid作用

0 root

最高許可權

1000~10000(不包含10000)

system 資料庫 服務 tty 保留的使用者

10000(包含10000)以上

其他使用者

android 每個應用會分配乙個使用者(系統應用例外)

3)取得使用者組識別碼

函式名作用

getegid()

取得有效的組識別碼

getgid()

取得真實的組識別碼

真實的使用者組:當下程式所擁有的使用者狀態

有效的使用者組:程式啟動時所擁有的使用者狀態

1、許可權不足,無法產生效果

2、提權需要該檔案屬於高階別的使用者或者使用者組,即有效使用者有更高的許可權或者,以更高許可權的使用者來執行

真實使用者許可權

有效使用者許可權

是否能提權

高許可權高許可權

可以提權

高許可權低許可權

可以提權

低許可權高許可權

可以提權

低許可權低許可權

不可提權

4)設定使用者識別碼

函式名作用

setreuid()

設定真實及有效的使用者識別碼

seteuid()

設定有效的使用者識別碼

setuid()

設定真實的使用者識別碼

5)設定使用者組的識別碼

函式名作用

setregid()

設定真實及有效用的組識別碼

setegid()

設定有效的組識別碼

setgid()

設定真實的組識別碼

6)守護程序的關鍵呼叫函式

函式名作用

setsid()

建立會話id

使用者和組要有足夠的許可權

如何獲取許可權:

1、以高許可權使用者來啟動

2、有能力提權

建立新會話

當前程序只能是子程序才能呼叫成功

C 標準庫函式

有許多不同的案件中,陣列排序的可能是有用的。演算法 如搜尋看看一些存在於乙個陣列 通常可以變得更簡單和 或更有效時,輸入的資料進行排序。此外,排序是非常有用的可讀性,如當列印列表按字母順序排列的名字。排序通常是通過反覆比較的陣列元素對進行的,和交換他們如果他們滿足一些標準。為了在這些元素進行比較根據...

C 標準庫函式

c 程式通常可以呼叫標準c 庫中的大量函式。這些函式完成一些基本的服務,如輸入和輸出等,同時也為一些經常使用的操作提供了高效的 實現 這些函式中含有大量的函式和類定義,以幫助程式設計師更好地使用標準c 庫。標準c 庫包含以下內容 和 標準c 庫的詳細訊息均在其對應的標頭檔案進行了說明。主要標準c 庫...

系統I O函式與C標準庫函式

先上圖 read write函式常常被稱為 unbuffered i o。指的是無使用者輸入級緩衝區,但不保證不使用核心緩衝區。使用者程式在讀寫檔案時既可以呼叫c標準i o庫函式,也可以直接呼叫底層的系統i o函式,有什麼區別呢?c標準庫的i o緩衝區有三種型別 全緩衝 行緩衝和無緩衝。如果緩衝區寫...