printf()与 *
如果你不想预先指定字段宽度,希望通过程序来指定,那么可以用 * 修饰符代替 字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是 %*d,那么参数列表中应包含 *和 d对应的值。这个技巧也可用于浮点值指定精度和字段宽度。
一个问题:
编写一个程序,先提示用户输入 姓 ,然后提示用户输入 名 。
在一行打印用户输入的 姓 和 名 ,下一行分别打印 名 和 姓 的 字母数。
字母数要与相应 姓 和 名 的结尾对齐
上代码!
#include<stdio.h>
#include<string.h> //引用一个<string.h> 当使用strlen需要引入
int main(){
char name[20]; //给定一个数组长度
char surname[20];
printf("please input your frist name :");
scanf("%s",name); //当给数组数据时不需要 & 符号
printf("good! now , input your last name :");
scanf("%s",surname);
int len_1 = strlen(name); //得到该数组的字符长度
int len_2 = strlen(surname);
printf("%s %s\n",name,surname);
printf("%*d %*d\n", len_1, len_1,len_2,len_2);
// 当使用*d 的 形式的时候需要注意要分别给定数据
// * 表示字符长度 d 表示你所想要打印的数据
//当然如果你想打印浮点数时 应该使用 f
printf("%-*d %-*d\n", len_1, len_1,len_2,len_2);
//注意要要在*前面添加 - 号
//这样即为从左侧开始打印,即左对齐
return 0;
}
结果如图所示:
scanf()的与*
scanf()
中
*
的用法与此不同。把
*
放在
%
和转换字符之间时,会使得
scanf()
跳过相应的输出项。
#include<stdio.h>
int main(void) {
int a, b, c;
scanf("%*d %*d %d",&c); //这个时候可以把想要赋值的数给定对应变量
//可以看到这个时候并不需要给前两个数给地址
//系统会直接跳过前两个数
printf("跳过两个数之后 %d",c);
return 0;
}
结果如下:
在方法在需要读取文件中特定列的内容时,这项跳过功能很有用哦(⊙*⊙)!
一些小技巧……
未完持续……………………