1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > %*s %.s %.*.s详解

%*s %.s %.*.s详解

时间:2021-06-14 14:54:13

相关推荐

%*s  %.s  %.*.s详解

取决于在scanf中使用还是在printf中使用。

但占位符不限于%s,还是%g,%d,%lf,%c等等。

(1)在scanf中使用

在scanf中使用,则添加了 *的部分会被忽略,不会被参数获取。

比如 %*d 就是读一个 %d 该读的东西,但不赋值给任何变量。

int index_t = 1;scanf("%*d", &index_t);printf("%d", index_t);//无论你怎么输入 获得的值都为1int index_t = 1;scanf("%d", &index_t);printf("%d", index_t);//无论你怎么输入 获得的值都是你输入的值

int a, b;char b[10];scanf("%d%*s",&a,b);/*** 输入为:12 abc* 那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,* 不赋予任何变量(例如这里的字符数组b)*/

(2)在printf中使用

printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个 * 代替那个常量,然后在后面提供参数给 * ,以实现动态格式输出。

① %*s

* 在 . 前面面,表示输出的总宽度,具体的数据来自参数表

如果参数 小于 字符串长度 ,则按照 原字符串 输出;

如果参数 大于 字符串长度,则按照 参数的长度 输出, 不足的在字符串左边补空格。

char s[] = "ABC";printf("%*s", 10, s);/** * 意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,* 这里等同于printf("%10s", s);*/

② %.*s

在 . 后面,表示输出的字符个数,具体的数据来自参数表*

如果参数 小于 字符串长度 ,则按照 参数的长度输出;

如果参数 大于 字符串长度,则按照 字符串实际长度 输出。

char s[] = "ABCD";printf("%.*s\n", 2, s);printf("%.*s\n", 10, s);/*** 输出结果为:* AB * ADCD*/

此外,如果是浮点型,%.*lf,还可以控制输出精度。

double a = 3.14;printf("%.*lf\n", 2, a);printf("%.*lf\n", 5, a);/*** 输出结果为:* 3.14* 3.14000*/

③%*.*s

综上,.前面定义输出总宽度,后面定义输出字符个数。

#include <cstdio>#include <iostream>using namespace std;int main(){char *s = "this is test example";int a, b;printf("%.*s\n", 10, s);//这里的常量10就是给*号的,控制输出字符,也可以用一个变量来控制printf("%*.*s\n", 20, 10, s); //常量20控制输出所占位宽,也可以用一个变量控制cin >> a >> b; //输入15 10printf("%*.*s\n", a, b, s); //输出为:-----this is te 前面定义输出总宽度,后面定义输出字符个数cin.get();cin.ignore(); //暂停程序执行}/*** 输出结果为:( -代表空格)* this is te //输出10个字符* ----------this is te //输出10个字符,总宽度为20* 15 10 //输入* -----this is te //输出10个字符,总宽度为15*

学习于:/question/166904879.html

/ph829/p/5576832.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
HTTP(S)协议详解

HTTP(S)协议详解

2019-10-18

ln -s 命令详解

ln -s 命令详解

2019-08-04

详解Start.s文件

详解Start.s文件

2022-05-11

B/S架构详解

B/S架构详解

2021-10-19