免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4196 | 回复: 14
打印 上一主题 下一主题

[C] 大家来分析一下此面试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-13 22:42 |只看该作者 |倒序浏览
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int main(void)
  5. {
  6.         char scMacAddr[6] = { 0, 0xE0, 0xFC,  0, 0, 0 };
  7.         char szstring[12];

  8.         memset(szstring,0,sizeof(szstring));

  9.         sprintf(szstring,"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",scMacAddr[1],
  10.                 scMacAddr[2],scMacAddr[3],scMacAddr[4],scMacAddr[5]);

  11.         printf("\n");

  12.         sprintf(szstring,"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",scMacAddr[0],
  13.                 scMacAddr[1],scMacAddr[2],scMacAddr[3],scMacAddr[4],scMacAddr[5]);

  14.         return 0;

  15. }
复制代码
请问此代码有什么问题,问题出在哪

此代码是目的是做什么,还有就是%2.2x是什么意思,从来没见过

论坛徽章:
3
巳蛇
日期:2013-10-03 10:41:48申猴
日期:2014-07-29 16:12:04天蝎座
日期:2014-08-21 09:24:52
2 [报告]
发表于 2010-08-13 23:03 |只看该作者
转成 unsigned char吧先

论坛徽章:
0
3 [报告]
发表于 2010-08-13 23:10 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2010-08-13 23:48 |只看该作者
# char szstring[12];
#

#         memset(szstring,0,sizeof(szstring));

可以这样char szstring[12] = {0};

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
5 [报告]
发表于 2010-08-14 00:29 |只看该作者
12溢出。
char 的 sign 是 unspecified 的。
没输出。
第一个sprintf少了一个参数。

论坛徽章:
0
6 [报告]
发表于 2010-08-14 00:37 |只看该作者
本帖最后由 zhangsuozhu 于 2010-08-14 00:42 编辑

sprintf(szstring,"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",scMacAddr[1],

                scMacAddr[2],scMacAddr[3],scMacAddr[4],scMacAddr[5]);

少一个参数
sprintf(szstring,"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",scMacAddr[0],

                scMacAddr[1],scMacAddr[2],scMacAddr[3],scMacAddr[4],scMacAddr[5]);

要向szstring 中存入  "00:f0:fc:00:00:00" 存不个

论坛徽章:
0
7 [报告]
发表于 2010-08-14 08:50 |只看该作者
大家说点主要的行不行?

那个少个参数是我自己调试时候修正的,我想问一下,其它的错误,能帮忙看下么

请问此代码有什么问题,问题出在哪

此代码是目的是做什么,还有就是%2.2x是什么意思,从来没见过

论坛徽章:
0
8 [报告]
发表于 2010-08-14 09:42 |只看该作者
数组越界了吧

论坛徽章:
3
巳蛇
日期:2013-10-03 10:41:48申猴
日期:2014-07-29 16:12:04天蝎座
日期:2014-08-21 09:24:52
9 [报告]
发表于 2010-08-14 10:58 |只看该作者
大家说点主要的行不行?

那个少个参数是我自己调试时候修正的,我想问一下,其它的错误,能帮忙看下么
...
linux初学三月 发表于 2010-08-14 08:50



    问题就出在没有强制转换成 unsigned char上。
%2.2x 就是输出至少占两个字符吧,后面的 .2真不知道是啥意思。。
不过这个东西不懂的话就算别人给你讲了你后面可能也会忘记,最好的办法就是自己去实验,用各种数试一试。

我马上就去试试。。{:3_190:}

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
10 [报告]
发表于 2010-08-14 13:58 |只看该作者
后面那个.2是不是前面补零保持两字符宽度的意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP