strcpy

原创 2005年05月02日 02:59:00

C语言进阶 的时候,老师提问我:下面这个函数的调用应注意什么,

void strcopy(char *s, char *t)
{
while (*s++ = *t++)
{
}
}

很明显,这段程序出自 K&R tcpl .

他的答案是,s应当事先分配空间。比如, *s = malloc(strlen(t) + 1) 之类的。

而我的答案是这样的,
1) s应当是目的字符串,t是源字符串;
2)t应当以“/0”结尾;

我之所以这样回答,是有这样的考虑,首先,函数的prototype声明很差劲,没有用诸如 void strcopy(char *Dest, const char *Src);这样很容易使得,目的串和源串弄混。*nix操作系统的mount, cp 命令都是 op src dest,所以很容易弄混。(仅就此函数而言,一般的人都不会弄错strcpy, 我的意思仅仅是说这个声明很很差劲)


其次,如果没有初始化指针s,起码在 compile 的时候就过不了。(甚至说 lint 的时候就过不了,虽然现在compile和lint是在一起了)。而 *t 是否以 结尾就是一个大问题了,因为这是一个隐形错误无法通过lint/compile来检查,所以可能造成死循环。

当然,在调用函数的时候,首先应该做的就是在函数的入口处检查参数的合法性。如果这么做了,上面的都是废话。

编写 strcpy函数

  • 2014年08月28日 10:50
  • 379B
  • 下载

strcpy函数

  • 2013年04月27日 01:23
  • 631B
  • 下载

字符串处理函数gets()、puts()、strcmp()、strlen()、strcpy()、strcat()-C语言

字符串处理函数gets()、puts()、strcmp()、strlen()、strcpy()、strcat()-C语言   字符串标准函数的原型在头文件string.h中。 1.输入字符串─...

memset,memcpy,strcpy 的用法

  • 2014年05月22日 10:16
  • 26KB
  • 下载

strlen、strcpy和strcmp源码

  • 2013年03月21日 22:44
  • 36KB
  • 下载

strcpy函数与memcpy函数(区别及实现)

出处:http://hi.baidu.com/yuanwenxue/item/df9976994b0024db7a7f01ef
  • num24
  • num24
  • 2014年10月17日 14:31
  • 275

strcpy的详细简绍

  • 2011年05月18日 16:35
  • 46KB
  • 下载

str的各种函数原型strcat、strcpy等

strlen原型
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:strcpy
举报原因:
原因补充:

(最多只允许输入30个字)