string.h標頭檔案(字串函式)

micryfotctf發表於2024-10-13

字串函式:C庫提供了多個處理字串的函式,ANSI C把這些函式的原型放在string.h標頭檔案中。其中最常用的函式有 strlen()、strcat()、strcmp()、strncmp()、strcpy()和 strncpy()。另外,還有sprintf()函式,其原型在stdio.h標頭檔案中。
strlen()函式:用於統計字串的長度
strcat()函式:用於拼接字串,接受兩個字串作為引數把第2個字串的備份附加在第1個字串末尾,並把拼接後形成的新字串作為第1個字串,第2個字串不變。strcat()函式的型別是char,strcat()函式返回第1個引數,即拼接第2個字串後的第1個字串的地址。注意,該函式無法檢查第1個陣列是否能容納第2個字串
strncat()函式:該函式的第3 個引數指定了最大新增字元數
strcmp()函式:用於字串比較,該函式透過比較運算子來比較字串。如果兩個字串引數相同,該函式就返回0,否則返回非零值。strcmp()函式只會比較try中第1個空字元前面的部分。所以,可以用strcmp()比較儲存在不同大小陣列中的字串。如果在字母表中第1個字串位於第2個字串前面,strcmp()中就返回負數;反之,strcmp()則返回正數。示例:strcmp("A", "A")。strcmp()比較所有的字元,按機器排序序列進行比較
strncmp()函式:該函式在比較兩個字串時,可以比較到字元不同的地方,也可以只比較第3個引數指定的字元數。
strcpy()函式:用於複製整個字串。strcpy()函式相當於字串賦值運算子。strcpy()第2個引數指向的字串被複製至第1個引數指向的陣列中。複製出來的字串被稱為目標字串,最初的字串被稱為源字串。
宣告陣列將分配儲存資料的空間,而宣告指標只分配儲存一個地址的空間。strcpy()的返回型別是 char*,該函式返回的是第 1個引數的值,即一個字元的地址。第1個引數不必指向陣列的開始。
strncpy()函式:該函式的第 3 個引數指明可複製的最大字元數。如果複製到第n個字元時還未複製完整個源字串,就不會複製空字元。處理程式示例:strncpy(qwords[i], temp, TARGSIZE - 1);qwords[i][TARGSIZE - 1] = '\0';確保儲存的是一個字串。
sprintf()函式:把資料寫入字串,而不是列印在顯示器上。第1個引數是目標字串的地址。其餘引數和printf()相同。Sprintf(,”%”,)第一個引數應該是一個指向字元陣列(即字串)的指標
其他函式:char *strpbrk(const char * s1, const char * s2);如果 s1 字元中包含 s2字串中的任意字元,該函式返回指向 s1 字串首位置的指標;如果在s1字串中未找到任何s2字串中的字元,則返回空字元。
char *strchr(const char * s, int c);如果s字串中包含c字元,該函式返回指向s字串首位置的指標(末尾的空字元也是字串的一部分,所以在查詢範圍內);如果在字串s中未找到c字元,該函式則返回空指標。

char *strrchr(const char * s, int c);該函式返回s字串中c字元的最後一次出現的位置(末尾的空字元也是字串的一部分,所以在查詢範圍內)。如果未找到c字元,則返回空指標。
char *strstr(const char * s1, const char * s2);該函式返回指向s1字串中s2字串出現的首位置。如果在s1中沒有找到s2,則返回空指標。
size_t型別是sizeof運算子返回的型別,用於宣告示例:size_t strlen(const char * s);該函式返回s字串中的字元數,不包括末尾的空字元。
字串排序的話排序的是指向字串的指標,而不是字串本身
C編譯器允許main()沒有引數或者有兩個引數。main()有兩個引數時,第1個引數是命令列中的字串數量。第2個引數通常是一個指向陣列的指標argv
數字既能以字串形式儲存,也能以數值形式儲存。
C要求用數值形式進行數值運算。但是在螢幕上顯示數字則要求字串形式,因為螢幕顯示的是字元。
atoi()函式:用於把字母數字轉換成整數,該函式接受一個字串作為引數,返回相應的整數值。
查詢字串並分析時應該使用 strcmp()來代替關係運算子,當比較字串時,應該使用strcpy()或strncpy()代替賦值運算子把字串賦給字元陣列。
atoi()、atol()和atof()函式把字串形式的數字分別轉換成int、long和double型別的數字。strtol()、strtoul()和strtod()函式把字串形式的數字分別轉換成long、unsigned long和double型別的數字。
格式轉換是按照AXCII表來的,’0’轉換完是48,一定要注意不是0。
使用遞迴注意事項:
注意觀察是否準備了遞迴停止的條件
使用字元型陣列最好把每個位置賦值一次,不然容易出問題。
使用switch記得加方括號。

相關文章