C字符串長度定義規范
(轉載請注明來源于金慶的專欄)
因為總是見到C字符串長度相關的錯誤, 所有定個規范出來, 有利于減少錯誤.
關鍵在于C字符串有個結尾0, 處理時需要注意.
定義字符串長度有兩種方式, 一種是用字符串的大小, 一種是字符串的長度.
字符串的大小即內存空間的大小, 而串長度加1才是所需空間.
正確:
char str[MAX_SIZE];
char str[MAX_LEN + 1];
錯誤:
char str[MAX_SIZE + 1];
char str[MAX_LEN];
如strncpy()之類的函數處理字符串時, 如果要省略結尾0時, 應如下:
strncpy(dst, src, MAX_LEN);
或
strncpy(dst, src, MAX_SIZE - 1);
(轉載請注明來源于金慶的專欄)
因為總是見到C字符串長度相關的錯誤, 所有定個規范出來, 有利于減少錯誤.
關鍵在于C字符串有個結尾0, 處理時需要注意.
定義字符串長度有兩種方式, 一種是用字符串的大小, 一種是字符串的長度.
字符串的大小即內存空間的大小, 而串長度加1才是所需空間.
正確:
char str[MAX_SIZE];
char str[MAX_LEN + 1];
錯誤:
char str[MAX_SIZE + 1];
char str[MAX_LEN];
如strncpy()之類的函數處理字符串時, 如果要省略結尾0時, 應如下:
strncpy(dst, src, MAX_LEN);
或
strncpy(dst, src, MAX_SIZE - 1);