有关C语言字符串的问题。

泣血無淚 2016-06-07 10:43:39
我想问下各位为什么【len = strlen(name) + 3;
printf("%*s.\n“,len, name】
这段代码片段打印出来前面只空了3个字符,而没有空6个?照理说不是应该3+3=6个空字符吗?
还有就是我把+3去掉的打印结果和【printf("%3s.\n",name)】是一样的?都没有空出字符
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
泣血無淚 2016-06-09
  • 打赏
  • 举报
回复
谢谢回答,问题已解决
小灸舞 版主 2016-06-08
  • 打赏
  • 举报
回复
你这个写法有的编译器是会报错的:field width specifier '*' expects argument of type 'int', but argument 2 has type 'char *'
而有的编译器是可以通过的 printf("%*s", len, name)
这时 printf 额外接受一个参数作为域宽。如果 name的长度小于 len ,会用空格使长度补足。(name本身长度3,再补3个空格)
你这句话相当于printf("%6s", name)
小灸舞 版主 2016-06-08
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
写法换成【int lens; len = strlen(name); lens = len + 3】 这样应该没什么问题吧?还有就是当lens小于name的时候,它是默认只显示name不空出字段?
没错
泣血無淚 2016-06-08
  • 打赏
  • 举报
回复
写法换成【int lens; len = strlen(name); lens = len + 3】 这样应该没什么问题吧?还有就是当lens小于name的时候,它是默认只显示name不空出字段?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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