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

[复制链接]
查看11 | 回复5 | 2016-8-29 16:42:10 | 显示全部楼层 |阅读模式
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是作为输出宽度而存在的,也就是说给你字符串长度个空间,用于存放字符串长度的变量。比如输入wewomen就相当于printf("%*d%*d",2,2,5,5);相当于printf("%2d%5d",2,...
回复

使用道具 举报

千问 | 2016-8-29 16:42:10 | 显示全部楼层
虽然只有两个%d 但是不要忘了 那个*号这个是输出宽度 因此 是4个参数Please input your firstname and sumame.12341234561234 123456. 4
6Press any key to continue 用长度做个长度参数输出的宽度 ...
回复

使用道具 举报

千问 | 2016-8-29 16:42:10 | 显示全部楼层
经过调试发现%*d
后面跟两个参数如printf("%*d",a,b);a表示打印的宽度,接着就是输出b的值楼上说对了。。。...
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行