求教fprintf!在线等

yifanwu 2004-11-06 04:14:15
请问这个语句怎么理解:

fprintf(pf,"\\%03d",pdata[i]);

主要是中间的\\%03d

pdata是socket recv回来的,用上面的打印出来总是\001\000之类的,是不是说那是不可打印字符?
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
%03d当然表示不足3位用0填充前面部分,这还要明讲。至于\0153肯定是其他地方的原因,在
这种格式控制下不可能出现这种错误的!
newegg2002 2004-11-06
  • 打赏
  • 举报
回复
应该是不足三位用'0'填充,否则按实际输出吧,,,
要不然,作一下测试?
#include<iostream>
#include <cstdio>
using namespace std;

int main()
{
int a[]={1,34,153,8990};
for(int i=0;i<sizeof(a)/sizeof(*a);++i)
{
printf("\\%03d",a[i]);
}
system("pause");
return 0;
}


结果:
\001\034\153\8990请按任意键继续. . .
printf 与 fprintf总不至于有什么差别吧,,
gavin_1980_danny 2004-11-06
  • 打赏
  • 举报
回复
she qi hou mian de


yifanwu 2004-11-06
  • 打赏
  • 举报
回复
to:HJ_34(刺桐游子)

我看c++ 参考上是说3.3表是最小三位,最大三位

也就是
[a ]
[ab ]
[abc]
这样的结果
yifanwu 2004-11-06
  • 打赏
  • 举报
回复
谢谢三位,意思是说如果不足三位就在前面加0,输出格式为\xxx对不?

\001\000\000\000\001\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\003\000\000\000\025\030\022\016\0262\0153

那结果中\0153有4位了怎么解呀?

掐死温柔 2004-11-06
  • 打赏
  • 举报
回复
不是吧。
\\%03d===>\\表示‘\’没错,但“%03d”好像没有这种用法吧?是不是应该写成“%0.3d”?
那位高人知道多一点啊?
  • 打赏
  • 举报
回复
与"c:\\windows\\system"中的"\\"同样的含义
掐死温柔 2004-11-06
  • 打赏
  • 举报
回复
建议查一下MSDN。
  • 打赏
  • 举报
回复
\\%03d===>\\表示‘\’,至于%03你应该知道是3位表示整数,用'0'填充

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧