sprintf的问题

hjd1399 2013-08-30 04:19:16
sprintf(buff, "%5s","abcd");

sprintf(buff, "%-5.5s","abcd"); 有什么区别。

我看有的程序中写成 "%-5.5s“,不值到有什么特别的意思
...全文
162 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-08-30
  • 打赏
  • 举报
回复
引用 3 楼 hjd1399 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 使对比下面4条语句的输出
printf("[%5s]\n","abcd");
printf("[%-5.5s]\n","abcd");
printf("[%5s]\n","abcdefg");
printf("[%-5.5s]\n","abcdefg");
谢谢 printf("[%-5.5s]\n","abcd"); //可以在后面补空格 printf("[%-5.5s]\n","abcdefg"); //删除后面多余的部分 如果我想删除前面的怎么办[/quote]
char s[]="abcdefg";
if (strlen(s)>5) printf("%s\n",s+strlen(s)-5);//cdefg
hjd1399 2013-08-30
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
使对比下面4条语句的输出
printf("[%5s]\n","abcd");
printf("[%-5.5s]\n","abcd");
printf("[%5s]\n","abcdefg");
printf("[%-5.5s]\n","abcdefg");
谢谢 printf("[%-5.5s]\n","abcd"); //可以在后面补空格 printf("[%-5.5s]\n","abcdefg"); //删除后面多余的部分 如果我想删除前面的怎么办
onlyhuiyi 2013-08-30
  • 打赏
  • 举报
回复
看cplusplus下定义 sprintf的第二个参数和printf 的第二参数是一样的 http://www.cplusplus.com/reference/cstdio/sprintf/?kw=sprintf

C string that contains a format string that follows
the same specifications as format in printf (see printf for details).
那这就简单了 .前面长度 后面精度 个人感觉sprintf这样写 就是为了以后printf直接这样调用 printf("%s",str); 字符串就有格式了。。
赵4老师 2013-08-30
  • 打赏
  • 举报
回复
使对比下面4条语句的输出
printf("[%5s]\n","abcd");
printf("[%-5.5s]\n","abcd");
printf("[%5s]\n","abcdefg");
printf("[%-5.5s]\n","abcdefg");

65,186

社区成员

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

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