字符串处理函数(三):strncpy

来源:互联网 发布:ghost linux 编辑:程序博客网 时间:2024/05/21 22:47

即兴写来,大概是这个样子的:

 

同样,上面的代码借鉴了一下之前写代码的经验,所以有点“信手拈来”的意思。但是这里面存在问题:

  1. 在while语句中,&&优先级高于=优先级,所以*dst++会首先跟前面的i++<n结合,因此上面的代码是不能通过编译的
  2. dst的结束符?按照前面的经验,这里是不需要的,但是要考虑while语句结束的情况:1)n个字符已复制完;2)src字符已全被赋值

对于2)情况,dst已读入'/0'空结束符,但是对于1)情况,并没有。因此还需要加入判断:

if(i==n) *dst='/0';

 

这里又有一个问题,这样的写法并没有考虑到i++<n判断是i值变化的实际情况,比如n=5,当i=5时,由于i++<n为false,所以while循环结束,但是由于已经判断已经执行,所以i在判断完成后会自加1,因此,综上考虑,最后的代码应该是:

 

原创粉丝点击