字串拷貝:
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,以保證該陣列中的內容不會在函式呼叫期間修改 ...