- 论坛徽章:
- 0
|
假设你现在正在面试,主考不紧不慢地给出下一道题目:“请用C语言写一个类似strcpy的函数。
正在装载数据……
要考虑可能发生的异常情况。” 你会怎么做呢?很明显,对方不是在考察你的编程能力,因为复制字符串实在太容易了。对方是在考察你的编程风格(习惯),或者说,要看看你编码的质量。
下面是多种可能的做法:
void
string_copy1(char* dest, const char* source)
{
assert(dest != NULL); /* 使用断言 */
assert(source != NULL);
while (*source != '\0') {
*dest = *source;
++dest;
++source;
}
*dest = '\0';
}
void
string_copy2(char* dest, const char* source)
{
if (dest != NULL && source != NULL) { /* 对错误消极静默 */
while (*source != '\0') {
*dest = *source;
++dest;
++source;
}
*dest = '\0';
}
}
int
string_copy3(char* dest, const char* source)
{
if (dest != NULL && source != NULL) {
while (*source != '\0') {
*dest = *source;
++dest;
++source;
}
*dest = '\0';
return SUCCESS; /* 返回表示正确的值 */
}
else {
errno = E_INVALIDARG; /* 设定错误号 */
return FAILED; /* 返回表示错误的值 */
}
}
// C++
void
string_copy4(char* dest, const char* source)
{
if (dest == NULL || source == NULL)
throw Invalid_Argument_Error(); /* 抛出异常 */
while (*source != '\0') {
*dest = *source;
++dest;
++source;
}
*dest = '\0';
}
我会选 3 、4
1 2 就出局
3是c 的做法 4是c++的做法 |
|