免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhangsuozhu
打印 上一主题 下一主题

求高手给个价,能写这样代码的程序员月薪应该给多少? [复制链接]

论坛徽章:
0
131 [报告]
发表于 2010-07-22 14:56 |只看该作者
我给他加2000
ytcheng 发表于 2010-07-21 18:24



   楼主6K少了,有人来挖了。HOO

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
132 [报告]
发表于 2010-07-22 15:06 |只看该作者
回复 108# zhangsuozhu

还争? 不回还只能说写这代码的人不明白。
回了显示自己都不明白。

字符串字面值本身就以0结尾。
所以 "\x01\x00\x00\x00Hello World!\n\x0" 中的最后一个\x0是多余的。

就靠一个柔性数组定价很天真。
安心学技术, 说多错多。

论坛徽章:
0
133 [报告]
发表于 2010-07-22 15:13 |只看该作者
说到这个重复的0,前一阵见过这样的代码:

CHAR strA[LEN] = "\0";

论坛徽章:
0
134 [报告]
发表于 2010-07-22 15:29 |只看该作者
代码不知是临时想的还是早有预谋

论坛徽章:
1
天蝎座
日期:2014-02-28 16:08:53
135 [报告]
发表于 2010-07-22 15:36 |只看该作者
netfilter里面的,让记下了

论坛徽章:
0
136 [报告]
发表于 2010-07-22 15:41 |只看该作者
本帖最后由 zhangsuozhu 于 2010-07-22 15:45 编辑

回复 133# OwnWaterloo
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int main()
  5. {
  6.     char *p = malloc(3);

  7.     if(!p) return -1;

  8.     memset(p, 'a', 3);
  9.     memcpy(p, "bb", 2);
  10.     printf("%s\n",p);
  11.     free(p);
  12.     return 0;
  13. }
复制代码
结果是bba   并且很容易产生段错误. 他用的是memcpy 不是strncpy.
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int main()
  5. {
  6.     char *p = malloc(4);

  7.     if(!p) return -1;

  8.     memset(p, 'a', 4);
  9.     memcpy(p, "bb\x0", 3);
  10.     printf("%s\n",p);
  11.     free(p);
  12.     return 0;
  13. }
复制代码
结果是bb

安心学技术, 说多错多。

论坛徽章:
0
137 [报告]
发表于 2010-07-22 15:42 |只看该作者
是炫耀吗? 是的话 炫耀的没什么水平

论坛徽章:
0
138 [报告]
发表于 2010-07-22 15:48 |只看该作者
回复 138# whiteme


是损人吗  损得没什么水平

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
139 [报告]
发表于 2010-07-22 15:48 |只看该作者
回复 137# zhangsuozhu

1. 这段代码少了结尾0与结尾0的空间。

回复  OwnWaterloo 结果是bba   并且很容易产生段错误. 他用的是memcpy 不是strncpy.结果是bb

    char *p = malloc(3);

    if(!p) return -1;

    memset(p, 'a', 3);
    memcpy(p, "bb", 2);
    printf("%s\n",p);
    free(p);
    return 0;
zhangsuozhu 发表于 2010-07-22 15:41



能输出bba是运气。

2. 对比:

memcpy(p, "bb", 2);

unsigned int size = sizeof(struct helloworld_t) + strlen("Hello World!\n") + 1;
memcpy((void *)p, (void *)"\x01\x00\x00\x00Hello World!\n\x0", size);


我已经看出来了, 你不仅仅对string-literal的理解有问题, 对c-style-string的理解也有。
别的我不多说了。

这点基础知识就想来cu找快感?
莫非你是M属性的?

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
140 [报告]
发表于 2010-07-22 15:51 |只看该作者
#     char *p = malloc(4);
#     if(!p) return -1;
#     memset(p, 'a', 4);

在大部分情况下,申请到内存后最好马上memset(p, 0, size);这边可以避免很多问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP