野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 374913|回复: 1267

【每日一思】考验阅读代码的分析能力

  [复制链接]
发表于 2013-12-11 00:50:35 | 显示全部楼层 |阅读模式
出了 每日一题那么久,相信大家的C语言也有了个更加深入的了解了吧?
我们的 题目,呵呵,也出得差不多了,接下来,我们 锻炼一下分析代码的能力!

  1. char *func(char *dest, const char *src, int count)   
  2. {   
  3.     char *tmp = dest;   
  4.         
  5.     while (count) {   
  6.         if ((*tmp = *src) != 0)   
  7.             src++;   
  8.         tmp++;   
  9.         count--;   
  10.     }   
  11.         
  12.     return dest;   
  13. }   

  14. //请解析 上述 代码的执行功能
复制代码
大家认真去思考,直接看答案是 学不到东西的,认真回答一下问题。 这些题目都是 找工作时面试笔试常考的问题,当然,往往是叫你自己写出源代码。

答案依旧回复可见。


  1. 直接上源代码
  2. /*   
  3. * strncpy - Copy a length-limited, %NUL-terminated string   
  4. * @dest: Where to copy the string to   
  5. * @src: Where to copy the string from   
  6. * @count: The maximum number of bytes to copy   
  7. *   
  8. * The result is not %NUL-terminated if the source exceeds   
  9. * @count bytes.   
  10. *   
  11. * In the case where the length of @src is less than that of   
  12. * count, the remainder of @dest will be padded with %NUL.   
  13. */   
  14. char *strncpy(char *dest, const char *src, size_t count)    //从 src 复制count个字符 到 dest
  15. {   
  16.     char *tmp = dest;   
  17.         
  18.     while (count) {   
  19.         if ((*tmp = *src) != 0)    //把 src 的值 复制到 dest ,如果 src 的值 非空,那么指针自加。
  20.                                    //否则 指针不加,src 后续都是指向 0 ,即字符串结束,后续的 dest值都为 0
  21.             src++;   
  22.         tmp++;                     // dest 的指针 自加
  23.         count--;                   //最大计数值 减 1
  24.     }   
  25.         
  26.     return dest;   
  27. }   
复制代码

回复

使用道具 举报

发表于 2013-12-11 02:21:08 | 显示全部楼层
复制部分长度的非0内容?
回复 支持 反对

使用道具 举报

发表于 2013-12-11 06:51:48 | 显示全部楼层
manutd 发表于 2013-12-11 02:21
复制部分长度的非0内容?

不对哦~
回复 支持 反对

使用道具 举报

发表于 2013-12-11 08:53:13 | 显示全部楼层
我是来看答案的
回复 支持 1 反对 0

使用道具 举报

发表于 2013-12-11 09:20:16 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-11 10:51:25 | 显示全部楼层
看看答案
回复 支持 反对

使用道具 举报

发表于 2013-12-11 10:57:37 | 显示全部楼层
看看答案真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-11 11:28:57 | 显示全部楼层
首先定义了一个函数指针func包含三个参数:返回char型值的指针变量dest,只读型的返回char型值的指针变量src,以及一个int型的变量count。定义了一个局部变量返回char型值的指针tmp并且把dest指针变量付给它。if语句中将指针src指向的内容付给tmp指向的内存单元也就是dest指向的单元。好了至此已经大概明白了。就是将只读数组src的不等于0的内容复制给dest指向的数组。count表示要进行复制并判断是否等于0的总量;将复制好的数组地址返回。
回复 支持 反对

使用道具 举报

发表于 2013-12-11 12:36:23 | 显示全部楼层
抢沙发~我来顶楼主的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-11 13:39:58 | 显示全部楼层
Waiting 发表于 2013-12-11 11:28
首先定义了一个函数指针func包含三个参数:返回char型值的指针变量dest,只读型的返回char型值的指针变量sr ...

漏了个把dest后面的数据清0这个没讲
回复 支持 反对

使用道具 举报

发表于 2013-12-11 17:00:46 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-11 17:36:04 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-11 17:41:04 | 显示全部楼层
值得看看。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-12-11 22:37:16 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-11 22:53:19 | 显示全部楼层
将 src指向的地址中的前 count个不为 0的数据拷贝到 dest地址中
回复 支持 反对

使用道具 举报

发表于 2013-12-12 11:05:53 | 显示全部楼层
把SRC中的值输出到dest直到零
回复 支持 反对

使用道具 举报

发表于 2013-12-12 15:41:58 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-13 13:35:35 | 显示全部楼层
看答案的...- -
回复 支持 反对

使用道具 举报

发表于 2013-12-15 01:41:40 | 显示全部楼层
一直复制,直到第一个0??
回复 支持 反对

使用道具 举报

发表于 2013-12-15 10:38:05 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-15 21:43:15 | 显示全部楼层
count作为while的判断条件,当其值为0时退出循环。
指针tmp初值为dest的值,当*tmp = *src == 0时,*tmp只能得到0。
最后函数返回指针dest
回复 支持 反对

使用道具 举报

发表于 2013-12-15 21:44:38 | 显示全部楼层
詹伟彬 发表于 2013-12-15 21:43
count作为while的判断条件,当其值为0时退出循环。
指针tmp初值为dest的值,当*tmp = *src == 0时,*tmp只 ...

补充一下,0应该是空字符
回复 支持 反对

使用道具 举报

发表于 2013-12-16 08:31:03 | 显示全部楼层
我认为是计算一个数组中值得和
回复 支持 反对

使用道具 举报

发表于 2013-12-16 08:46:30 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-16 13:43:18 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2013-12-19 14:06:47 | 显示全部楼层
把count个src指针的不等于0的值复制到以dest指针为起始地址的空间
回复 支持 反对

使用道具 举报

发表于 2013-12-19 14:07:12 | 显示全部楼层
把count个src指针的不等于0的值复制到以dest指针为起始地址的空间
回复 支持 反对

使用道具 举报

发表于 2013-12-21 08:44:59 | 显示全部楼层
看看,指针还真有点搞不明白呢
回复 支持 反对

使用道具 举报

发表于 2013-12-21 11:58:51 | 显示全部楼层
学习!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2013-12-21 11:59:38 | 显示全部楼层
学习~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2013-12-21 12:00:08 | 显示全部楼层
学习~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2013-12-21 12:00:55 | 显示全部楼层
学习~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2013-12-22 10:20:26 | 显示全部楼层
复制字符串
回复 支持 反对

使用道具 举报

发表于 2013-12-22 10:20:45 | 显示全部楼层
复制字符串
笑坏我的肚子了
回复 支持 反对

使用道具 举报

发表于 2013-12-22 14:24:42 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2013-12-23 09:00:44 | 显示全部楼层
看看答案!
回复 支持 反对

使用道具 举报

发表于 2013-12-25 15:33:26 | 显示全部楼层
从SRC中复制count个字符到dest中
回复 支持 反对

使用道具 举报

发表于 2013-12-25 15:34:00 | 显示全部楼层
从SRC中复制count个字符到dest中,不知道是否对,蒙的笑坏我的肚子了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-25 15:37:02 | 显示全部楼层
xinxin 发表于 2013-12-25 15:34
从SRC中复制count个字符到dest中,不知道是否对,蒙的笑坏我的肚子了

漏了 后面 清 0操作
回复 支持 反对

使用道具 举报

发表于 2013-12-26 15:14:07 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2013-12-28 08:21:05 | 显示全部楼层
这个学习一下
回复 支持 反对

使用道具 举报

发表于 2013-12-30 15:40:01 | 显示全部楼层
复制数据,count位?   
回复 支持 反对

使用道具 举报

发表于 2014-1-3 08:59:50 | 显示全部楼层
最近总有很多的内容不知道
回复 支持 反对

使用道具 举报

发表于 2014-1-3 09:02:53 | 显示全部楼层
非常感谢,看来要好好看看C语言了
回复 支持 反对

使用道具 举报

发表于 2014-1-3 09:15:42 | 显示全部楼层
拷贝字符串并后附0,如果原字符串为空,则复制count个0
回复 支持 反对

使用道具 举报

发表于 2014-1-4 08:36:31 | 显示全部楼层
来看答案                        
回复 支持 反对

使用道具 举报

发表于 2014-1-4 11:06:25 | 显示全部楼层
把src的值付给dest,并把dest值返回
回复 支持 反对

使用道具 举报

发表于 2014-1-4 20:07:01 | 显示全部楼层
抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

发表于 2014-1-5 21:44:57 | 显示全部楼层
看帖不回者 么有小JJ.........
回复 支持 反对

使用道具 举报

发表于 2014-1-6 20:18:36 | 显示全部楼层
返回字符串中相同的字符
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-21 22:40 , Processed in 0.044325 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表