C語言--“string.h”庫的幾個函式
標頭檔案:#include<string.h>
string .h 標頭檔案定義了一個變數型別、一個巨集和各種操作字元陣列的函式。
1,變數型別size_t
這是無符號整數型別,它是 sizeof 關鍵字的結果。
2,巨集定義NULL
這個巨集是一個空指標常量的值。
3,各種庫函式
(1),strdup()
功能:將串拷貝到新建的位置處
用法:char * strdup(char *str);
strdup()函式原型:
strdup()主要是拷貝字串s的一個副本,由函式返回值返回,這個副本有自己的記憶體空間,和S不相干。strdup()函式複製一個字串,使用完後記得刪除在函式中動態申請的記憶體。strdup()函式的引數不能為NULL,否則報錯。因為該函式包含了strlen()函式,而該函式引數不能是NULL。
(2) strtok()
strtok函式的作用是把字串以規定的字元分割開
p = strtok(buf, "$");
p為指標,buf也是指標,這句程式碼的意思就是把buf中的字串以"$"為分隔符分割開來,分割出來的字串儲存到指標p中。
再次呼叫strtok函式時,把buf換成NULL,不需要再寫buf。即:
p = strtok(NULL, "$");
strtok函式的分隔字元還可以是多個,不一定只為一個
p = strtok(buf, "$,");
這句程式碼的意思是以"$"和","為分隔符分割buf中的字串。每當遇到這兩個字元其中一個都會分割,不是遇到"$,"兩個字元連在一起才分割,記住只需要遇到其中一個字元就可以了
(3)getline()
ssize_t getline(char **linepter,size_t *n,FILE *stream);
getline函式可以獲取檔案中的一行資料。
返回型別ssize_t為有符號整形,其值為獲取的字元數,檔案結束則返回-1,包括換行符’\n’,但不包括字串結束符’\0’。linepter用來儲存獲得的字串,size_t為無符號整形表示linepter的位元組數。當*linepter為空時函式則動態為其分配空間,注意要將size_t值賦0。當linepter的空間不足時,函式會通過realloc,重新分配更大的空間。stream為檔案指標,用於讀取檔案。
舉個例子,在Linux命令列輸入一行資料,將其儲存下來:
size_t line_size = 100;
char * line = (char*) malloc(sizeof(char)*line_size);
getline(&line, &line_size, stdin);(注意前兩個引數的取地址符)