为了账号安全,请及时绑定邮箱和手机立即绑定

请问在C语言中 strlen函数用法的问题,求解释

请问在C语言中 strlen函数用法的问题,求解释

C PHP
慕莱坞森 2021-11-23 19:15:45
#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是这个*是指怎样输出啊?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

b[10],这个10是数组的大小,可以用sizeof来查看b的大小
strlen,用于确定字符串的长度,和数组大小无关,哪怕常常使用数组来存储字符串。它会从字符串首字符开始向后搜索,直到遇到
终止符
0。所以虽然输入了20个字母造成了溢出,却不妨碍strlen得到正确的长度
如果学会基本的调试操作,就可以直接在内存中查看字符串的值,没必要输出来看了

查看完整回答
反对 回复 2021-11-28
?
繁星coding

TA贡献1797条经验 获得超4个赞

字符数组就是字符串,在存储方式上没啥区别。
但如果用strlen来获得字符串长度的话,是找到第一个0值就认为字符串结束了。
char
p[]={‘0’,‘1’,‘2’,‘3’,‘4’};这样的用strlen返回值是0。
其实要想知道一个存储单元的大小,应该用sizeof。比如刚才题的答案是sizeof(p)=4

查看完整回答
反对 回复 2021-11-28
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

经过调试发现
%*d 后面跟两个参数

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

查看完整回答
反对 回复 2021-11-28
  • 3 回答
  • 0 关注
  • 370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信