#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得到正確的長度
如果學會基本的調試操作,就可以直接在內存中查看字符串的值,沒必要輸出來看了

繁星coding
TA貢獻1797條經驗 獲得超4個贊
字符數組就是字符串,在存儲方式上沒啥區別。
但如果用strlen來獲得字符串長度的話,是找到第一個0值就認為字符串結束了。
char
p[]={‘0’,‘1’,‘2’,‘3’,‘4’};這樣的用strlen返回值是0。
其實要想知道一個存儲單元的大小,應該用sizeof。比如剛才題的答案是sizeof(p)=4
- 3 回答
- 0 關注
- 403 瀏覽
添加回答
舉報
0/150
提交
取消