C 字串處理 函式

2021-08-15 18:31:21 字數 1102 閱讀 1459

字串拷貝:

int snprintf(char restrict buf, size_t n, const char restrict format, …);

函式說明:最多從源串中拷貝n-1個字元到目標串中,然後再在後面加乙個0。所以如果目標串的大小為n 的話,將不會溢位。

格式化資料

sscanf()的用法:

int sscanf(const char *buffer,const char *format,[argument ]…);

sscanf會從buffer裡讀進資料,依照format的格式將資料寫入到argument裡

strncmp與memcmp:

int strcmp(char str1,char str2,int n)

int memcmp(const void *buf1, const void *buf2, unsigned int count);

比較記憶體區域buf1和buf2的前count個位元組。

所需標頭檔案string.h或memory.h

返回值

當buf1< buf2時,返回值<0

當buf1==buf2時,返回值=0

當buf1>buf2時,返回值》0

區別:

對於memcmp(),如果兩個字串相同而且count大於字串長度的話,memcmp不會在\0處停下來,會繼續比較\0後面的記憶體單元,直到_res不為零或者達到count次數。

對於strncmp(),由於((__res = *cs - *ct++) != 0 || !*cs++)的存在,比較必定會在最短的字串的末尾停下來,即使count還未為零。具體的例子:

char a1=」abcd」;

char a2=」abcd」;

對於memcmp(a1,a2,10),memcmp在兩個字串的\0之後繼續比較

對於strncmp(a1,a2,10),strncmp在兩個字串的末尾停下,不再繼續比較。

所以,如果想使用memcmp比較字串,要保證count不能超過最短字串的長度,否則結果有可能是錯誤的。

C字串處理函式

void memccpy void dest,const void src,int c,size t n 從src所指向的物件複製n個字元到dest所指向的物件中。如果複製過程中遇到了字元c則停止複製,返回指標指向dest中字元c的下乙個位置 否則返回null。void memcpy void de...

C字串處理函式

void memccpy void dest,const void src,int c,size t n 從src所指向的物件複製n個字元到dest所指向的物件中。如果複製過程中遇到了字元c則停止複製,返回指標指向dest中字元c的下乙個位置 否則返回null。void memcpy void de...

C 字串處理函式

其函式原型為 strcat char,const char strcat是string catenate 字串連線 的縮寫 該函式有兩個字元陣列的引數,函式的作用是 將第二個字元陣列中的字串連線到前面字元陣列的字串的後面 第二個字元陣列被指定為const,以保證該陣列中的內容不會在函式呼叫期間修改 ...