memchr
來自 cppreference.com
定義於標頭檔案 <string.h> |
||
void* memchr( const void* ptr, int ch, size_t count ); |
(1) | |
/*QVoid*/ *memchr( /*QVoid*/ *ptr, int ch, size_t count ); |
(2) | (自 C23 起) |
1) 在
ptr
指向的物件的最初 count
位元組(每個位元組都解釋為 unsigned char
)中,查詢 (unsigned char)ch
的首次出現。2) 泛型函式,等價於 (1)。令
T
為非限定物件型別(包括 void
)。- 如果
ptr
的型別為const T*
,則返回型別為const void*
。 - 否則,如果
ptr
的型別為T*
,則返回型別為void*
。 - 否則,行為未定義。
- 如果
(memchr)
或函式指標),則實際函式宣告 (1) 將變得可見。如果訪問超出了搜尋陣列的末尾,則行為是未定義的。如果 ptr
是空指標,則行為是未定義的。
此函式的行為就像它順序讀取位元組並在找到匹配位元組時立即停止:如果 |
(C11 起) |
目錄 |
[編輯] 引數
ptr | - | 指向要檢查的物件的指標 |
ch | - | 要搜尋的位元組 |
count | - | 要檢查的最大位元組數 |
[編輯] 返回值
指向位元組位置的指標,如果未找到此類位元組,則為空指標。
[編輯] 示例
執行此程式碼
#include <stdio.h> #include <string.h> int main(void) { const char str[] = "ABCDEFG"; const int chars[] = {'D', 'd'}; for (size_t i = 0; i < sizeof chars / (sizeof chars[0]); ++i) { const int c = chars[i]; const char *ps = memchr(str, c, strlen(str)); ps ? printf ("character '%c'(%i) found: %s\n", c, c, ps) : printf ("character '%c'(%i) not found\n", c, c); } return 0; }
可能的輸出
character 'D'(68) found: DEFG character 'd'(100) not found
[編輯] 參考
- C23 標準 (ISO/IEC 9899:2024)
- 7.24.5.1 memchr 函式 (p: TBD)
- C17 標準 (ISO/IEC 9899:2018)
- 7.24.5.1 memchr 函式 (p: 267-268)
- C11 標準 (ISO/IEC 9899:2011)
- 7.24.5.1 memchr 函式 (p: 367)
- C99 標準 (ISO/IEC 9899:1999)
- 7.21.5.1 memchr 函式 (p: 330)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 4.11.5.1 memchr 函式
[編輯] 另請參閱
查詢字元的第一次出現 (函式) | |
C++ 文件 關於 memchr
|