C字符串長(zhǎng)度定義規(guī)范
(轉(zhuǎn)載請(qǐng)注明來(lái)源于金慶的專欄)
因?yàn)榭偸且姷紺字符串長(zhǎng)度相關(guān)的錯(cuò)誤, 所有定個(gè)規(guī)范出來(lái), 有利于減少錯(cuò)誤.
關(guān)鍵在于C字符串有個(gè)結(jié)尾0, 處理時(shí)需要注意.
定義字符串長(zhǎng)度有兩種方式, 一種是用字符串的大小, 一種是字符串的長(zhǎng)度.
字符串的大小即內(nèi)存空間的大小, 而串長(zhǎng)度加1才是所需空間.
正確:
char str[MAX_SIZE];
char str[MAX_LEN + 1];
錯(cuò)誤:
char str[MAX_SIZE + 1];
char str[MAX_LEN];
如strncpy()之類的函數(shù)處理字符串時(shí), 如果要省略結(jié)尾0時(shí), 應(yīng)如下:
strncpy(dst, src, MAX_LEN);
或
strncpy(dst, src, MAX_SIZE - 1);
(轉(zhuǎn)載請(qǐng)注明來(lái)源于金慶的專欄)
因?yàn)榭偸且姷紺字符串長(zhǎng)度相關(guān)的錯(cuò)誤, 所有定個(gè)規(guī)范出來(lái), 有利于減少錯(cuò)誤.
關(guān)鍵在于C字符串有個(gè)結(jié)尾0, 處理時(shí)需要注意.
定義字符串長(zhǎng)度有兩種方式, 一種是用字符串的大小, 一種是字符串的長(zhǎng)度.
字符串的大小即內(nèi)存空間的大小, 而串長(zhǎng)度加1才是所需空間.
正確:
char str[MAX_SIZE];
char str[MAX_LEN + 1];
錯(cuò)誤:
char str[MAX_SIZE + 1];
char str[MAX_LEN];
如strncpy()之類的函數(shù)處理字符串時(shí), 如果要省略結(jié)尾0時(shí), 應(yīng)如下:
strncpy(dst, src, MAX_LEN);
或
strncpy(dst, src, MAX_SIZE - 1);