关于字符串的编程题真的是太常见了,而且是非常吸引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 = 0; 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 = 0 ; 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
文件中,是一个与机器相关的unsigned
类型。32系统中是unsigned int
,64位系统中则是long unsigned int