C語言中 strlen函數用法的問題

問題回答轉自:http://zhidao.baidu.com/link?url=_-3fJi5zXvo2XDlWOqxSwtxgKAXWU_kVhvH2YUb2hcM2ibUaOFaFm64SJ5giY0IQzz-b4QOIuWR1KU0aj_-Y4K


看c primer plus的時候遇到一道編程題:

5.編寫一個程序,首先要求用戶輸入名字,然後要求用戶輸入姓氏。在一行打印輸入的姓名,在下行打印
每個名字中字母的個數。把字母個數與相應名字的結尾對齊,如下所示:
Melissa Honeybee
7 8
然後打印相同的信息,但是字母個數與相應單詞的開始對齊。


#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;

其中的strlen和*的意思:

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是作爲輸出寬度而存在的,也就是說給你字符串長度個空間,用於存放字符串長度的變量。
比如輸入
we
women
就相當於
printf("%*d%*d",2,2,5,5);
相當於
printf("%2d%5d",2,5);輸出   【1個空格】2【4個空格】5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章