C語言學習之我見 memchr 記憶體查詢字元函式

2022-07-10 06:03:12 字數 2267 閱讀 2609

memchr()記憶體查詢字元函式:主要用於從記憶體中查詢自己需要的字元位置。

(1)函式原型:

void *memchr(const

void *_buf ,int _val,size_t _maxcount)

(2)標頭檔案

#include
(3)功能:

在記憶體中,從第乙個變數const void *_buf給出的記憶體位址開始,以位元組為單位,按照第二個變數int _val所對應的位元組值查詢。

如果有則返回所對應的位元組記憶體位址,如果沒有則返回null或者奔潰。

第三個變數size_t _maxcount表示查詢的最大範圍。

(4)基礎例項**:

char a="

hello zobol!";

char c='z'

;

char*ret;

ret = (char*)memchr(a,c,strlen(a)

); printf("%c

",*ret);//

*的意思是取出位址所對應記憶體位置的值

printf("

%s",ret);//

%s是用於字串輸出,輸入乙個記憶體的位址,會自動輸出從開頭到\0的值

(5)輸出情況:

(6)問題1:int _val的取值範圍0~255,可以超過嗎?:

回答:不可以,int_val的值對應是一位元組二進位制0000 0000~11111111的無符號數值,不可以超過否則會發生錯誤,程式直接奔潰,不是返回空指標。一般情況下用char表示,自動強制轉換為int比較好。

例項**:

char b="";

int vali = 111;//

'o'的對應ascii碼

int vali2 = 300; //

超限值

char* ret2 = (char*)memchr(b,vali,15

);

char* ret3 = (char*)memchr(b,vali2,7

); printf(

"%c\n

",*ret2);//

*的意思是取出位址所對應記憶體位置的值

printf("

%s\n

",ret2);//

%s是用於字串輸出,輸入乙個記憶體的位址,會自動輸出從開頭到\0的值

printf("

%c\n

",*ret3);//

*的意思是取出位址所對應記憶體位置的值

printf("

%s\n

",ret3);

運**況:

(注意返回值,程式是直接奔潰,不是正常結束)

(7)問題2:用於字串查詢,不知道字串長度怎麼辦?

回答:用strlen()函式獲取,不能像python那樣用-1表示結尾,c語言中字串不是物件沒有被封裝。

(8)問題3:對於'\0'能查詢嗎?

回答:可以,memchr針對的是一段記憶體,而不是乙個字串,只要二進位制對於的值相等,就會返回。

(9)問題4:如果有兩個重複的字元值,在查詢範圍內,返回哪乙個?

示例**:

char c="";

int valii = 111;//

'o'的對應ascii碼

char* ret4 = (char*)memchr(c,valii,strlen(c));

char* ret5 = (char*)memchr(ret4+1,valii,strlen(c));//

記憶體位址加1,跳過第乙個o

printf("

%s\n

",ret4);

printf(

"%s\n

",ret5);

運**況:

(10)問題5:如果size_t _maxcount範圍超過字串長度,或者在合法範圍內沒有找到符合的字元值,會返回什麼?

回答:並不是返回空指標,經過測試,是直接奔潰。(在不同編譯器也許實現不一樣)

R語言學習之我見

作為乙個學習r語言兩年的乙個過來人,跌跌撞撞,走過一些彎路,也有一些自己方法,我認為學r語言可以這樣學習 1 環境 2 基本資料結構 向量字串 陣列矩陣 資料框因子列表表 邏輯運算 3 迴圈 for迴圈 repeat迴圈 while迴圈 4 函式 函式基本語法 遞迴函式 管道函式 5 基本視覺化繪圖...

C語言學習之我見 strcpy 字串複製函式

strcpy 函式,用於兩個字串值的複製。1 函式原型 char strcpy char dest,const char source 2 標頭檔案 string.h 3 功能 將從const char source到 0 結尾的字串 包括 0 複製到char dest 所指的字串處。返回值char...

C語言學習之我見 strlen 字串長度函式

strlen 函式,負責給出字串的長度。注意是字串的長度,不是字元陣列的長度。1 函式原型 size t cdecl strlen const char str 2 標頭檔案 include 3 功能 返回從給出陣列開頭的記憶體位址開頭const char str到 0 的長度 不包括 0 4 基礎...