關于字元串的程式設計題真的是太常見了,而且是非常吸引BAT等公司IT技術面試官。這類題目一般都是不難的,核心代碼都是非常簡單,但是需要注意的細節是太多了,而這也正是考察了面試者的技術功底。關于字元串的考題,常見的有strncpy, strncat等等。
-
strncpy
代碼來自Linux Manual手冊 (在linux終端輸入 man strncpy 就可以看到了)
char *
strncpy(char *dest, const char *src, size_t n)
{
size_t i;
for (i = ; i < n && src[i] != '\0'; i++)
dest[i] = src[i];
for ( ; i < n; i++)
dest[i] = '\0';
return dest;
}
-
strncat
char*
strncat(char *dest, const char *src, size_t n)
{
size_t dest_len = strlen(dest);
size_t i;
for (i = ; i < n && src[i] != '\0' ; i++)
dest[dest_len + i] = src[i];
dest[dest_len + i] = '\0';
return dest;
}
-
分析:
其實上面兩段代碼是很簡潔的,也很美觀。需要注意的點:
- 傳回值是
char*
-
的修飾是src
,這點尤其重要,很考察個人的const
功底C++
- 添加
'\0'
-
的使用size_t
- 傳回值是
- 對
的解釋:size_t
是定義在size_t
檔案中,是一個與機器相關的cstddef
類型。32系統中是unsigned
,64位系統中則是unsigned int
long unsigned int