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

问题回答转自:http://zhidao.baidu.com/link?url=_-3fJi5zXvo2XDlWOqxSwtxgKAXWU_kVhvH2YUb2hcM2ibUaOFaFm64SJ5giY0IQzz-b4QOIuWR1KU0aj_-Y4K


看c primer plus的时候遇到一道编程题:

5.编写一个程序,首先要求用户输入名字,然后要求用户输入姓氏。在一行打印输入的姓名,在下行打印
每个名字中字母的个数。把字母个数与相应名字的结尾对齐,如下所示:
Melissa Honeybee
7 8
然后打印相同的信息,但是字母个数与相应单词的开始对齐。


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

你可能感兴趣的:(C程序学习)