#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;這個程序是用作 輸入姓名 然后輸出姓名和姓名字數(shù)為什么這里printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));要strlen4次呢?不是兩個變量嘛?還有%*d是這個*是指怎樣輸出???
3 回答

湖上湖
TA貢獻2003條經(jīng)驗 獲得超2個贊
b[10],這個10是數(shù)組的大小,可以用sizeof來查看b的大小
strlen,用于確定字符串的長度,和數(shù)組大小無關(guān),哪怕常常使用數(shù)組來存儲字符串。它會從字符串首字符開始向后搜索,直到遇到
終止符
0。所以雖然輸入了20個字母造成了溢出,卻不妨礙strlen得到正確的長度
如果學會基本的調(diào)試操作,就可以直接在內(nèi)存中查看字符串的值,沒必要輸出來看了

繁星coding
TA貢獻1797條經(jīng)驗 獲得超4個贊
字符數(shù)組就是字符串,在存儲方式上沒啥區(qū)別。
但如果用strlen來獲得字符串長度的話,是找到第一個0值就認為字符串結(jié)束了。
char
p[]={‘0’,‘1’,‘2’,‘3’,‘4’};這樣的用strlen返回值是0。
其實要想知道一個存儲單元的大小,應該用sizeof。比如剛才題的答案是sizeof(p)=4

慕妹3146593
TA貢獻1820條經(jīng)驗 獲得超9個贊
經(jīng)過調(diào)試發(fā)現(xiàn)
%*d 后面跟兩個參數(shù)
如
printf("%*d",a,b);
a表示打印的寬度,接著就是輸出b的值
- 3 回答
- 0 關(guān)注
- 411 瀏覽
添加回答
舉報
0/150
提交
取消