Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916757
  • 博文数量: 177
  • 博客积分: 8613
  • 博客等级: 中将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-12 04:16
文章分类
文章存档

2012年(12)

2011年(24)

2010年(24)

2009年(75)

2008年(42)

我的朋友

分类: C/C++

2009-07-12 12:14:23

   看了练习的题目,要求实现strccpy库函数,这样实现了一下:
[root@bjxdurs235 c-study]# vi copy_n_str.c

#include
void copy_n( char dst[], char src[], int n){
        int i,dst_len,src_len;
        dst_len = strlen(dst);
        src_len = strlen(src);
        if (n > dst_len || n < 0){
                printf("input error ! \n dst[] can not store %d chars\n",n);
                return ;
        }

        if( n > src_len)
                n = src_len;

        for (i=0; i                dst[i] = src[i];

        }

        if (i < dst_len)
                dst[i] = '\0';

}

int main(void)
{
        int i;
        char srouce[] = "hello every one , good evening!";
        char destination[20]="1234567891234567891";
        copy_n(destination,srouce,10);

        printf("%s\n",destination);

}
~                                                                                                                                  
~                                                                                                                                  
~                                                                                                                                  
~                                                                                                                                  
~                                                                                                                                  
~                                                                                                                                  
"copy_n_str.c" 33L, 547C written
[root@bjxdurs235 c-study]# gcc copy_n_str.c
[root@bjxdurs235 c-study]# ./a.out
hello ever

过程中遇到的问题有:

1、刚开始没有给destination[20]初始化,结果用gdb调试的时候,传给函数的时候,他内容是:
(gdb) i locals
i = 8286196
srouce = "hello every one , good evening!"
destination = "\000\000\000\000\000\000\000\000\2160"

所以strlen求他的长度,肯定是0了
2、给dst的最后一个元素赋值:'\0',那个i已经指向最后一个数组元素了,不需要再加1了

好了,自己实现了以后,看看课后的答案吧,答案里没有用strlen判断,而是直接把src的为0的条件拿来判断了,这样不太好,对目的数组的长度肯定是要判断的啊。
阅读(427) | 评论(0) | 转发(0) |
0

上一篇:打印prime

下一篇:第5章操作符和表达式

给主人留下些什么吧!~~