免费注册 查看新帖 |

Chinaunix

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

打印%02x [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-01-17 21:51 |只看该作者 |倒序浏览
我用[%02x]打印字符串变量的时候有时候会出来类似于
[ffffff4e]之类的


  1. int main() {
  2.     char mystr[20];
  3.     int i;
  4.     for (i = 0; i < 20; i++)
  5.         printf("[%02x]", mystr[i]);
  6. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2003-01-17 21:55 |只看该作者

打印%02x

应该是
  1. int main() {
  2.     char mystr[20];
  3.     int i;
  4.     for (i = 0; i < 20; i++)
  5.         printf("[%02x]", mystr+i);
  6. }
复制代码

mystr 不是地址,所以才会出问题。

论坛徽章:
0
3 [报告]
发表于 2003-01-17 22:26 |只看该作者

打印%02x

%02x是什么输出
是16进制吗
数的话应该用mystr

论坛徽章:
0
4 [报告]
发表于 2003-01-17 22:26 |只看该作者

打印%02x

你先改一下看能不能成功

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2003-01-17 22:30 |只看该作者

打印%02x

原帖由 "无双" 发表:
%02x是什么输出
是16进制吗
数的话应该用mystr

回无双:%02x 是指输出两位16 进制数.
如果不足两位则在前面补0

论坛徽章:
0
6 [报告]
发表于 2003-01-17 22:40 |只看该作者

打印%02x


收到

论坛徽章:
0
7 [报告]
发表于 2003-01-18 01:40 |只看该作者

打印%02x

这很正常啊.因为你分配了一块内存但没有给它初始化,所以里面的东西是不可预知的.
还有printf("[%02x]", mystr+i); 是不正确的.这样出来的是地址.

论坛徽章:
0
8 [报告]
发表于 2003-01-18 09:58 |只看该作者

打印%02x

直接用printf("[%s",mystr)就可以打印字符串变量了,何必要使用%02x呢?

论坛徽章:
0
9 [报告]
发表于 2003-01-18 11:02 |只看该作者

打印%02x

这么多回贴都没我想要的。。。
用%02x逐个打印字符串是必要的,因为用%s打印遇到不可见字符会乱码
以上程序只是一个例子,

  1. int main() {
  2.     char mystr[20];
  3.     int i;
  4.     ....................................
  5.     ....................................   // 对mystr的一些操作
  6.     for (i = 0; i < 20; i++)
  7.         printf("[%02x]", mystr[i]);
  8. }

复制代码

用mystr+i和mystr不是一个道理吗?呵呵。。。

论坛徽章:
0
10 [报告]
发表于 2003-01-18 14:40 |只看该作者

打印%02x

*(mystr+i)
mystr
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP