欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
基本C庫函數

3.基本C庫函數

當編寫(xiě)驅動(dòng)程序時(shí),一般情況下不能使用C標準庫的函數。Linux內核也提供了與標準庫函數功能相同的一些函數,但二者還是稍有差別。

類(lèi)別

函數名

功能

函數形成

參數

描述

字符串轉換

simple_strtol

把一個(gè)字符串轉換為一個(gè)有符號長(cháng)整數

long simple_strtol (const char * cp, char ** endp, unsigned int base)

cp指向字符串的開(kāi)始,endp為指向要分析的字符串末尾處的位置,base為要用的基數。

simple_strtoll

把一個(gè)字符串轉換為一個(gè)有符號長(cháng)長(cháng)整數

long long simple_strtoll (const char * cp, char ** endp, unsigned int base)

cp指向字符串的開(kāi)始,endp為指向要分析的字符串末尾處的位置,base為要用的基數。

simple_strtoul

把一個(gè)字符串轉換為一個(gè)無(wú)符號長(cháng)整數

long long simple_strtoul (const char * cp, char ** endp, unsigned int base)

cp指向字符串的開(kāi)始,endp為指向要分析的字符串末尾處的位置,base為要用的基數。

simple_strtoull

把一個(gè)字符串轉換為一個(gè)無(wú)符號長(cháng)長(cháng)整數

long long simple_strtoull (const char * cp, char ** endp, unsigned int base)

cp指向字符串的開(kāi)始,endp為指向要分析的字符串末尾處的位置,base為要用的基數。

vsnprintf

格式化一個(gè)字符串,并把它放在緩存中。

int vsnprintf (char * buf, size_t size, const char * fmt, va_list args)

buf為存放結果的緩沖區, size為緩沖區的大小,fmt為要使用的格式化字符串,args為格式化字符串的參數。

snprintf

格式化一個(gè)字符串,并把它放在緩存中。

int snprintf (char * buf, size_t size, const char * fmt, ... ...)

buf為存放結果的緩沖區, size為緩沖區的大小,fmt為格式化字符串,使用@…來(lái)對格式化字符串進(jìn)行格式化,為可變參數。

vsprintf

格式化一個(gè)字符串,并把它放在緩存中。

int vsprintf (char * buf, const char * fmt, va_list args)

buf為存放結果的緩沖區, size為緩沖區的大小,fmt為要使用的格式化字符串,args為格式化字符串的參數。

sprintf

格式化一個(gè)字符串,并把它放在緩存中。

int sprintf (char * buf, const char * fmt, ... ...)

buf為存放結果的緩沖區, size為緩沖區的大小,fmt為格式化字符串,使用@…來(lái)對格式化字符串進(jìn)行格式化,為可變參數。

字符串操作

strcpy

拷貝一個(gè)以NUL結束的字符串

char * strcpy (char * dest, const char * src)

dest為目的字符串的位置, src為源字符串的位置。

strncpy

拷貝一個(gè)定長(cháng)的、以NUL結束的字符串

char * strncpy (char * dest, const char * src, size_t count)

dest為目的字符串的位置, src為源字符串的位置,count為要拷貝的最大字節數

與用戶(hù)空間的strncpy不同,這個(gè)函數并不用NUL填充緩沖區,如果與源串超過(guò)count,則結果以非NUL結束

strcat

把一個(gè)以NUL結束的字符串添加到另一個(gè)串的末尾

char * strcat (char * dest, const char * src)

dest為要添加的字符串, src為源字符串。

strncat

把一個(gè)定長(cháng)的、以NUL結束的字符串添加到另一個(gè)串的末尾

char * strncat (char * dest, const char * src, size_t count)

dest為要添加的字符串, src為源字符串,count為要拷貝的最大字節數

注意,與strncpy,形成對照, strncat正常結束。

strchr

在一個(gè)字符串中查找第一次出現的某個(gè)字符

char * strchr (const char * s, int c)

s為被搜索的字符串,c為待搜索的字符。

strrchr

在一個(gè)字符串中查找最后一次出現的某個(gè)字符

char * strrchr (const char * s, int c)

s為被搜索的字符串,c為待搜索的字符。

strlen

給出一個(gè)字符串的長(cháng)度

size_t strlen (const char * s)

s為給定的字符串

strnlen

給出給定長(cháng)度字符串的長(cháng)度

size_t strnlen (const char * s, size_t count)

s為給定的字符串

strpbrk

在一個(gè)字符串中查找第一次出現的一組字符

char * strpbrk (const char * cs, const char * ct)

cs為被搜索的字符串,ct為待搜索的一組字符

strtok

把一個(gè)字符串分割為子串

char * strtok (char * s, const char * ct)

s為被搜索的字符串,ct為待搜索的子串

注意,一般不提倡用這個(gè)函數,而應當用strsep

memset

用給定的值填充內存區

void * memset (void * s, int c, size_t count)

s為指向內存區起始的指針,c 要填充的內容,count為內存區的大小

I/O空間的訪(fǎng)問(wèn)不能使用memset,而應當使用memset_io。

bcopy

把內存的一個(gè)區域拷貝到另一個(gè)區域

char * bcopy (const char * src, char * dest, int count)

src為源字符串,dest為目的字符串,而count為內存區的大小

注意,這個(gè)函數的功能與memcpy相同,這是從BSD遺留下來(lái)的,對I/O空間的訪(fǎng)問(wèn)應當用memcpy_toio memcpy_fromio

memcpy

把內存的一個(gè)區域拷貝到另一個(gè)區域

void * memcpy (void * dest, const void * src, size_t count)

dest為目的字符串,Src為源字符串,而count為內存區的大小

I/O空間的訪(fǎng)問(wèn)應當用memcpy_toio memcpy_fromio

memmove

把內存的一個(gè)區域拷貝到另一個(gè)區域

void * memmove (void * dest, const void * src, size_t count)

dest為目的字符串,Src為源字符串,而count為內存區的大小

memcpymemmove處理重疊的區域,而該函數不處理。

memcmp

比較內存的兩個(gè)區域

int memcmp (const void * cs, const void * ct, size_t count)

cs為一個(gè)內存區,ct為另一個(gè)內存區,而count為內存區的大小

memscan

在一個(gè)內存區中查找一個(gè)字符

void * memscan (void * addr, int c, size_t size)

addr為內存區,c為要搜索的字符,而size為內存區的大小

返回c第一次出現的地址,如果沒(méi)有找到c,則向該內存區傳遞一個(gè)字節。

strstr

在以NUL結束的串中查找第一個(gè)出現的子串

char * strstr (const char * s1, const char * s2)

s1為被搜索的串,s2為待搜索的串。

memchr

在一個(gè)內存區中查找一個(gè)字符

void * memchr (const void * s, int c, size_t n)

s為內存區,為待搜索的字符,n為內存的大小

返回c第一次出現的位置,如果沒(méi)有找到c,則返回空。

位操作

set_bit

在位圖中原子地設置某一位

void set_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址

這個(gè)函數是原子操作,如果不需要原子操作,則調用__set_bit函數,nr可以任意大,位圖的大小不限于一個(gè)字。

__set_bit

在位圖中設置某一位

void __set_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址

clear_bit

在位圖中清某一位

void clear_bit (int nr, volatile void * addr)

nr為要清的位,addr為位圖的起始地址

該函數是原子操作,但不具有加鎖功能,如果要用于加鎖目的,應當調用smp_mb__before_clear_bit smp_mb__after_clear_bit函數,以確保任何改變在其他的處理器上是可見(jiàn)的。

__change_bit

在位圖中改變某一位

void __change_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址。

change_bit不同,該函數是非原子操作。

change_bit

在位圖中改變某一位

void change_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址。

test_and_set_bit

設置某一位并返回該位原來(lái)的值

int test_and_set_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址。

該函數是原子操作

__test_and_set_bit

設置某一位并返回該位原來(lái)的值

int __test_and_set_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址。

該函數是非原子操作,如果這個(gè)操作的兩個(gè)實(shí)例發(fā)生競爭,則一個(gè)成功而另一個(gè)失敗,因此應當用一個(gè)鎖來(lái)保護對某一位的多個(gè)訪(fǎng)問(wèn)。

test_and_clear_bit

清某一位,并返回原來(lái)的值

int test_and_clear_bit (int nr, volatile void * addr);

nr為要設置的位,addr為位圖的起始地址。

該函數是原子操作

__test_and_clear_bit

清某一位,并返回原來(lái)的值

int __test_and_clear_bit (int nr, volatile void * addr);

nr為要設置的位,addr為位圖的起始地址。

該函數為非原子操作

test_and_change_bit

改變某一位并返回該位的新值

int test_and_change_bit (int nr, volatile void * addr)

nr為要設置的位,addr為位圖的起始地址。

該函數為原子操作

test_bit

確定某位是否被設置

int test_bit (int nr, const volatile void * addr)

nr為要測試的第幾位,addr為位圖的起始地址。

find_first_zero_bit

在內存區中查找第一個(gè)值為0的位

int find_first_zero_bit (void * addr, unsigned size)

addr為內存區的起始地址,size為要查找的最大長(cháng)度

返回第一個(gè)位為0的位號

find_next_zero_bit

在內存區中查找第一個(gè)值為0的位

int find_next_zero_bit (void * addr, int size, int offset)

addr為內存區的起始地址,size為要查找的最大長(cháng)度,offset開(kāi)始搜索的起始位號。

ffz

在字中查找第一個(gè)0

unsigned long ffz (unsigned long word);

word為要搜索的字。

ffs

查找第一個(gè)已設置的位

int ffs (int x)

x為要搜索的字。

這個(gè)函數的定義方式與Libc中的一樣。

hweight32

返回一個(gè)N位字的加權平衡值

hweight32 ( x)

x為要加權的字

個(gè)數的加權平衡是這個(gè)數所有位的總和。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux中函數test_bit :簡(jiǎn)單地返回這個(gè)位的當前值.
AVR GCC常用頭文件
Keil C51的庫函數
加鎖的各種選擇
Linux內核的原子操作 | Just a dream
CString參數用于const void*的理解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久