博士
最后登录1970-1-1
在线时间 小时
注册时间2013-3-25
|
出了 每日一题那么久,相信大家的C语言也有了个更加深入的了解了吧?
我们的 题目,呵呵,也出得差不多了,接下来,我们 锻炼一下分析代码的能力!
- char *func(char *dest, const char *src, int count)
- {
- char *tmp = dest;
-
- while (count) {
- if ((*tmp = *src) != 0)
- src++;
- tmp++;
- count--;
- }
-
- return dest;
- }
- //请解析 上述 代码的执行功能
复制代码 大家认真去思考,直接看答案是 学不到东西的,认真回答一下问题。 这些题目都是 找工作时面试笔试常考的问题,当然,往往是叫你自己写出源代码。
答案依旧回复可见。
- 直接上源代码
- /*
- * strncpy - Copy a length-limited, %NUL-terminated string
- * @dest: Where to copy the string to
- * @src: Where to copy the string from
- * @count: The maximum number of bytes to copy
- *
- * The result is not %NUL-terminated if the source exceeds
- * @count bytes.
- *
- * In the case where the length of @src is less than that of
- * count, the remainder of @dest will be padded with %NUL.
- */
- char *strncpy(char *dest, const char *src, size_t count) //从 src 复制count个字符 到 dest
- {
- char *tmp = dest;
-
- while (count) {
- if ((*tmp = *src) != 0) //把 src 的值 复制到 dest ,如果 src 的值 非空,那么指针自加。
- //否则 指针不加,src 后续都是指向 0 ,即字符串结束,后续的 dest值都为 0
- src++;
- tmp++; // dest 的指针 自加
- count--; //最大计数值 减 1
- }
-
- return dest;
- }
复制代码
|
|