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

来源:互联网 发布:拍淘宝送小礼品 微信 编辑:程序博客网 时间:2024/06/05 19:40
问题回答转自: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是作为输出宽度而存在的,也就是说给你字符串长度个空间,用于存放字符串长度的变量。比如输入wewomen就相当于printf("%*d%*d",2,2,5,5);相当于printf("%2d%5d",2,5);输出   【1个空格】2【4个空格】5

0 0