字符串函数实现的小问题啊-----------------大虾们帮帮忙啊-----------
时间:2011-12-07
来源:互联网
#include <stdio.h> #include <assert.h> char *str_cpy(char *dst, const char *src) { char *address; assert((dst != NULL) && (src != NULL)); address = dst; while ((*dst++ = *src++) != '\0') //这一句改成 while (*dst++ = *src++) 这样不严谨吗? 这样少了个判断速度有更快吗 { ; } return address; }
是不是上面的 要是去笔试的时候 写成while (*dst++ = *src++)会扣分啊?
为什么我看crt源码 strcat的实现 就没有 !='\0'判断了啊
C/C++ code
char *strcat(char *dst, const char *src) { char *p = dst; while(*p) { p++; } while (*p++ = *src++) { } return dst; }
作者: wing_0706 发布时间: 2011-12-07
dst[-1] = '\0';
简洁既是美... 就是要注意while跳出来src指向'\0'之后的地址
作者: pqpqr 发布时间: 2011-12-07
作者: hnuqinhuan 发布时间: 2011-12-07
改成while (*dst++ = *src++);
dst[-1] = '\0';
简洁既是美... 就是要注意while跳出来src指向'\0'之后的地址
改成while (*dst++ = *src++);
dst[-1] = '\0'; 这一句也要啊?? 不是在循环里就给赋上去了吗?
作者: wing_0706 发布时间: 2011-12-07
作者: zhaghi 发布时间: 2011-12-07
我还是喜欢没有\0的
我也是啊, ,,没\0判断速度有快些吗?
作者: wing_0706 发布时间: 2011-12-07
这不会扣分吧,只要你真的明白为什么不加!='\0'也可以就行了
你看这连接的解说,,http://baike.baidu.com/view/1026861.htm无语啊..
作者: wing_0706 发布时间: 2011-12-07
如果你的while循环中没有语句可以直接写成while();
作者: w1003025426 发布时间: 2011-12-07
没有'\0'速度不会更快吧,while循环每次还是得判断啊!
如果你的while循环中没有语句可以直接写成while();
那不是能少一次判断吗..?
作者: wing_0706 发布时间: 2011-12-07
如果笔试要写strcpy函数的话我建议你可以写个更安全的char *str_cpy(char *dst, const char *src, int idstLen),防止src长度大于dst的情况导致数组访问越界。
作者: HFred 发布时间: 2011-12-07
while (*p++ = *src++) 是c语言风格,可以不是bool表达式,int类型也行,while ((*dst++ = *src++) != '\0')是c++的规范要求,一般公司都会要求条件判断必须使用bool表达式,为的是易懂,两者是等价的,如果编译器优化的够好,效率应该是一样的。
如果笔试要写strcpy函数的话我建议你可以写个更安全的char *str_cpy(char *d……
这样啊,那明白多了谢谢啊, 不过字符串函数 一开都只有c语言版的吗,,?
作者: wing_0706 发布时间: 2011-12-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28