有关C语言字符串的问题

C语言 码拜 8年前 (2016-04-13) 855次浏览
本人想问下各位为什么【len = strlen(name) + 3;
printf(“%*s.\n“,len, name】
这段代码片段打印出来有关C语言字符串的问题前面只空了3个字符,而没有空6个?照理说不是应该3+3=6个空字符吗?
还有就是本人把+3去掉的打印结果和【printf(“%3s.\n”,name)】是一样的?都没有空出字符有关C语言字符串的问题
解决方案

40

你这个写法有的编译器是会报错的: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)

40

引用:

写法换成【int lens;
len = strlen(name);
lens = len + 3】
这样应该没什么问题吧?还有就是当lens小于name的时候,它是默认只显示name不空出字段?

没错


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关C语言字符串的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)