C语言中 strlen函数用法的问题

#include<stdio.h>#include<string.h>intmain(void){charsumame[20],firstname[20];printf(... #include <stdio.h>
#include <string.h>
int main(void)
{
char sumame[20],firstname[20];
printf("Please input your firstname and sumame.");
scanf("%s",firstname);
scanf("%s",sumame);
printf("%s %s.\n",firstname,sumame);
printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame),
strlen(sumame));
return 0;

这个程序是用作 输入姓名 然后输出姓名和姓名字数
为什么这里
printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));
要strlen4次呢?不是两个变量嘛?还有%*d是这个*是指怎样输出啊?
展开
 我来答
填空还是选择
推荐于2016-08-29 · TA获得超过945个赞
知道小有建树答主
回答量:520
采纳率:100%
帮助的人:410万
展开全部
printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));
这个是输出匹配的问题。
举个例子
printf("%5d",5); 就会给你5个空间输出5,前面4个空格,然后输出5.
printf("%*d",5,5);和上面一样,利用*匹配5控制输出宽度。就是四个空格5.

同理上面的第一个strlen是作为输出宽度而存在的,也就是说给你字符串长度个空间,用于存放字符串长度的变量。
比如输入
we
women
就相当于
printf("%*d%*d",2,2,5,5);
相当于
printf("%2d%5d",2,5);输出 【1个空格】2【4个空格】5
沧海雄风2009
2012-08-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2872万
展开全部
虽然只有两个%d 但是不要忘了 那个*号 这个是输出宽度

因此 是4个参数

Please input your firstname and sumame.1234
123456
1234 123456.
4 6
Press any key to continue

用长度做个长度参数输出的宽度 不知道你能听明白吗?

printf("%*d%*d\n",
strlen(firstname) 对应第一个*
,strlen(firstname) 对应第一个%d
,strlen(sumame), 对应第二个*
strlen(sumame));对应第二个%d
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaoqi08110820
2012-08-22 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1742万
展开全部
经过调试发现
%*d 后面跟两个参数

printf("%*d",a,b);
a表示打印的宽度,接着就是输出b的值

楼上说对了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芮济萨智宸
2019-10-22 · TA获得超过1079个赞
知道小有建树答主
回答量:1971
采纳率:96%
帮助的人:11.5万
展开全部
b[10],这个10是数组的大小,可以用sizeof来查看b的大小
strlen,用于确定字符串的长度,和数组大小无关,哪怕常常使用数组来存储字符串。它会从字符串首字符开始向后搜索,直到遇到
终止符
0。所以虽然输入了20个字母造成了溢出,却不妨碍strlen得到正确的长度
如果学会基本的调试操作,就可以直接在内存中查看字符串的值,没必要输出来看了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
源傲潭昕珏
2019-06-14 · TA获得超过1043个赞
知道小有建树答主
回答量:2034
采纳率:94%
帮助的人:9.7万
展开全部
字符数组就是字符串,在存储方式上没啥区别。
但如果用strlen来获得字符串长度的话,是找到第一个0值就认为字符串结束了。
char
p[]={‘0’,‘1’,‘2’,‘3’,‘4’};这样的用strlen返回值是0。
其实要想知道一个存储单元的大小,应该用sizeof。比如刚才题的答案是sizeof(p)=4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式