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

#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是这个*是指怎样输出啊?

慕莱坞森
浏览 363回答 3
3回答

湖上湖

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

繁星coding

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

慕妹3146593

经过调试发现%*d 后面跟两个参数如printf("%*d",a,b);a表示打印的宽度,接着就是输出b的值
打开App,查看更多内容
随时随地看视频慕课网APP