如果你不想預先設置字段的寬度,想通過程序來進行設定,則可以可以使用“*”來進行修飾字段的寬度,前提是在程序中要包含“*”和參數對應的值(比如%*d,那麽參數應該包含*和%d的值)。不僅如此,*還可以在程序中來去確定浮點型數字的精度和字段寬度。

precision 精度

width 寬度

printf()的使用*修飾符樣例:

 1 #include<stdio.h>
2 int main()
3 {
4 unsigned width,precision;
5 int number=256;
6 float weight=242.5;
7
8 printf("Enter a field width:\n");
9 scanf("%d",&width);
10 printf("The number is :%*d:\n",width,number);/*width:字段寬度*/
11 printf("Now enter a width and a precision:\n");
12 scanf("%d %d",&width,&precision);
13 printf("Wight = %*.*f\n",width,precision,weight);
14 printf("Done!\n");
15
16 return 0;
17 }
18 /*輸出樣例
19
20 Enter a field width:
21 6
22 The number is : 256:
23 Now enter a width and a precision:
24 8 3
25 Wight = 242.500
26 Done!
27
28 這裏用戶輸入了6,則字段寬度變成了6,
29 下面輸入的8和3分別表示為,字段寬度為8,精度為小數點后三位 。
30 */

scanf()使用*修飾符的樣例:

 1   #include<stdio.h>
2 int main()
3 {
4 int num;
5
6 printf("Please enter three integers:\n");
7 scanf("%*d %*d %d",&num);
8 printf("The last integer was %d\n",num);
9
10 return 0;
11 }
12 /*輸出樣例
13 13
14 14 Please enter three integers:
15 15 2013 2014 2015
16 16 The last integer was 2015
17 17
18 18 這裏用戶輸入三個整形數字,最後只輸出了2015
19 19 在scanf中使用*修飾符放在%和轉換字符之間,scanf會自動跳過相應的輸入項
20 20
21 21 */

關於printf()的輸出tips:

爲了使輸出的形式更加美觀整潔,可是適當的修改字段寬度

 1   #include <stdio.h>
2 int main()
3 {
4 int num1=21,num2=559,num3=7;
5 int num4=1,num5=5678,num6=770;
6 int num7=879,num8=12,num9=3;
7 printf("%d %d %d\n",num1,num2,num3);
8 printf("%d %d %d\n",num4,num5,num6);
9 printf("%d %d %d\n",num7,num8,num9);
10 return 0;
11 }
12 /*
13 輸出樣例
14 15 21 559 7
16 1 5678 770
17 879 12 3
18 19 排列比較亂,不是很整齊
20 */

修改後:

 1  #include <stdio.h>
2 int main()
3 {
4 int num1=21,num2=559,num3=7;
5 int num4=1,num5=5678,num6=770;
6 int num7=879,num8=12,num9=3;
7 printf("%9d %9d %9d\n",num1,num2,num3);
8 printf("%9d %9d %9d\n",num4,num5,num6);
9 printf("%9d %9d %9d\n",num7,num8,num9);
10 return 0;
11 }
12 /*
13 輸出樣例
14
15 21 559 7
16 1 5678 770
17 879 12 3
18
19 可以整齊排列
20
21 */

printf()和scanf()的*修飾符的更多相关文章

  1. C的printf与scanf的用法

    之前没学过C语言,只学过C++,所以就来自学下C语言了,其实个人认为C与C++的区别很小,基本上就是printf与scanf这点输出和输入的区别了,如果还有什么区别的话那就是要包含的头文件是不同的.比 ...

  2. printf与scanf的返回值、注意点

    printf()的返回值为其输出字符串常量的字符数(注意字符数与字数的区别)注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符). scanf()函数返回成功读入的项目的个数 ...

  3. printf和scanf

    一 printf和scanf(printf和scanf是c语言中的输入输出库函数) printf(”格式控制“,输出列表) <1>格式控制 其中包含 格式声明(%+相应格式对应字母).转义 ...

  4. HTML: css 修飾文本和字體

    因爲這個我認爲不用記,所以關於css 修飾文本&字體的屬性只需要打開css手冊,找到(屬性 > 文本) & (屬性 > 字體)翻看即可. 關於字體屬性: Propertie ...

  5. 【转】stm32CubeMx上移植自己的printf()和scanf()函数

    要想printf()和scanf() 函数工作,我们需要把printf()和scanf() 重新定向到串口中.重定向是指用户可以自己重写C 的库函数,当连接器检查到用户编写了与C 库函数相同名字的函数 ...

  6. 数据类型、常量、变量、printf、scanf和运算符

    数据类型 常量 变量 printf函数介绍 scanf函数介绍 运算符 数据类型 数据类型是指数据在内存中存储的方式. C语言中有5大数据类型:基本类型.构造类型.指针类型.空类型.定义类型. C语言 ...

  7. 重学C语言 -- printf,scanf

     printf();    用来显示格式串的内容          注意: 参数不可以换行,否则会出一个警告.       格式串中占位符比表达式数量多     会显示一个无意义值 格式串中占位符比表 ...

  8. C++中printf和scanf的用法

    (一)printf的用法 printf:按格式打印,向控制台输出.print:打印 ,f:formate,格式化. 在使用printf向控制台输出时,不建议使用中文字符串,中文字符串的问题比较复杂,有 ...

  9. printf()与 scanf()

    一直以来就没有认真看过控制台输入输出的格式,现今找了一些材料,分享如下: 1. 格式化规定符     Turbo C2.0提供的格式化规定符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━ ...

  10. 浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别

    printf语法: #include <stdio.h>int printf( const char *format, ... ); printf()函数根据format(格式)给出的格式 ...

随机推荐

  1. 34.HyperLinkedModelSerializer详解

    HyperLinkedModelSerializer继承ModelSerializer,只是自动多出了一个url字段,其他都是一样的 不同之处在于使用超链接来表示关联关系而不是主键 默认情况下Hype ...

  2. C# 6.0 添加和增强的功能【基础篇】

    C# 6.0 是在 visual studio 2015 中引入的.此版本更多关注了语法的改进,让代码更简洁且更具可读性,使编程更有效率,而不是和前几个版本一样增加主导性的功能. 一.静态导入 我们都 ...

  3. 二、docker安装

    一.docker安装 Docker 是管理容器的工具, Docker 不等于 容器. 1.1.docker yum源设置 #step 1 download docker-ce.repo file [r ...

  4. Linux学习环境搭建流程

    Linux学习环境搭建 Vmware安装 VMware下载:https://www.vmware.com/go/getworkstation-win 运行安装程序,该重启安装驱动就重启,不需要就下一步 ...

  5. 第2-1-4章 SpringBoot整合FastDFS文件存储服务

    目录 5 SpringBoot整合 5.1 操作步骤 5.2 项目依赖 5.3 客户端开发 5.3.1 FastDFS配置 5.3.2 FastDFS配置类 5.3.3 文件工具类 5.3.4 文件上 ...

  6. Redis可视化管理工具-RedisDesktopManager

    Windows客户端,访问Redis数据库并执行一些基本操作. 链接:https://pan.baidu.com/s/1OuGqIfbpGwglC-642rECbQ 提取码:m6uo

  7. Oracle数据泵导入dmp文件,报UDI-00013、UDI-00019错误原因

    这个问题挺简单,想了想,还是记录下吧. [root@ufdb165 bin]# ./impdp cwy_init0914/cwy_123456789@ufgovdb1 directory=DATA_P ...

  8. 云原生之旅 - 11)基于 Kubernetes 动态伸缩 Jenkins Build Agents

    前言 上一篇文章 云原生之旅 - 10)手把手教你安装 Jenkins on Kubernetes 我们介绍了在 Kubernetes 上安装 Jenkins,本文介绍下如何设置k8s pod作为Je ...

  9. 如何重启kafka

    修改配置文件 ps -ef |grep kafka kill (kafka进程号) 启动kafka [root@lecode-dev-001 bin]# ./kafka-server-start.sh ...

  10. 直播CDN调度技术关键挑战与架构设计

    作者:胡济麟 1.背景介绍 1.1 直播业务特点 互联网视频直播是一种消息媒介形态,提供时产时消的内容,经过多年,已经发展出秀场.游戏.电商.体育等多种业务形态.主要特点是:内容实时产生实时消费,对时 ...