C语言:格式化输入输出函数

2023-11-04

C语言提供的格式化输入输出函数的原型在头文件stdio.h中声明,在使用时应在程序头部包含该文件:

#include <stdio.h>

#include "stdio.h"

1. 格式化输出函数printf

  • 功能:
    -将数据按指定的格式输出到标准输出流中(如屏幕)。
  • 语法格式:
    -printf(格式控制字符串,输出列表);

-格式控制字符串:使用" "括起来的用于表示输出格式的字符串 (字符串中可以包含任何字符,如空格、转义字符,甚至汉字)。格式控制字符串在输出时遵循两种规则:
(1)普通字符在输出时,按原样输出。转义字符则输出它所代表的字符(一般是控制字符)。
(2)格式字符串:
一般形式:%[标志] [输出最小宽度] [.精度] [长度] 类型
方括号[删除线格式 ]中的项表示可省略项。

方括号中各项的意义如下:
1、类型
表示输出数据的类型,其格式符和意义如下表所示:
格式字符
2、标志
标志字符为-、+、#、空格四种,其意义下表所示:
-:结果左对齐,右边填空格。
+:输出符号(正号或负号)。
空格:输出值为正时冠以空格,为负号时冠以符号。
#:对c、s、d、u类无影响,在输出时加前缀0;对x(X)类,在输出时加前缀0x(0X);对e、g、f类当结果有小数时才给出小数点。

3、输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则左补空格(数据右对齐)。

4、精度
精度以“.”开头,后面跟十进制整数。如果输出数字,则该十进制数表示小数的位数;如果输出的是字符,则表示输出字符的个数。(实际位数大于所定义的精度数时,省略超出的部分。)

5、长度
长度格式符有h、l两种,h表示按短整型输出,l表示按长整型输出。

-输出列表
若干要输出的数据项,可以是常量、变量或表达式,各项用逗号“,"隔开(输出项的类型应该与格式控制符一一对应)。

常用示例:

#include <stdio.h>

int main()
{
   int i = 6;
   int j = 100;
   double d = 8.8888888;      //数据宽度为9列,小数部分占7列
   char ch = 'A';             //定义字符常量ch
   
   //等号、汉字原样输出;换行符控制换行,不显示;格式控制符控制格式
   printf("整数i=%d\ni+1=%3d\n",i,i+1);       //输出项分别为整型变量、表达式(数组宽度不足3,则左补0)
   printf("小数d=%8.5f\n",d);           //双精度浮点型变量(数据总共9列宽,小数部分占5列)         
   printf("单个字符输出:%c\n字符串输出:%s\n",ch,"nb666");  //输出项分别为字符变量、字符串常量
   printf("十进制数j转十六进制输出:j=0x%x\n",j);        //以十六进制输出无符号整数(不带前缀0x或0X)
   printf("程序结束!");        //原样输出
   
   return 0;
}

程序运行结果为:

程序运行结果
注意:区别字符常量和字符串常量。如:"a"是字符串常量,'a’是字符常量。引号不属于字符串,而是起到界定作用。

2. 格式化输入函数scanf

  • 功能:
    -从标准输入流中(如键盘)按指定格式接收输入的数据。
  • 语法格式:
    -scanf(格式控制字符串,地址列表);

-格式控制字符串:用于指定输入的格式。由格式控制符和普通字符构成。
(1)普通字符:在输入数据时,按原样输入。
(2)格式字符串:
一般形式:% [*] [输入数据宽度] [长度] 类型
方括号[删除线格式 ] 中的项表示可省略项。

方括号中各项的意义如下:

1、类型
表示输入数据的类型,其格式符和意义如下表所示:
输入数据类型
2、“*” 符
跳过该输入值,不赋予相应的变量。
例如:

scanf("%d*d%d",&a,&b);

当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。

3、宽度
用十进制整数来指定输入的宽度(即字符数)。
例如:

scanf("%5d",&a);

输入:123456
结果:只把12345(前5位)赋予变量,其余部分被截去。
又如:

scanf("%4d%4d",&a,&b);

输入:12345678
结果:将1234赋予a,5678赋予b。

4、长度
长度格式符有h、l两种,h表示输入短整型数据,l表示输入长整型数据(如%ld)或双精度浮点数(如%lf)。

-地址列表
若干输入数据项的内存地址(通常是变量的地址),各地址间用逗号“,"隔开(输入数据项的数量、类型必须与格式控制符从左到右一一对应)。

常用示例:

/*语法格式区别*/
//printf(格式控制字符串,输出列表);
//scanf(格式控制字符串,地址列表);
//注意:在输入数据时要求原样输入!!!
#include <stdio.h>

int main()
{
	int data1,data2,data5;
	int z,i,j;
	float x,y,data7;
	char data3,data4,data6;
	
	//整数输入
	printf("请输入两个整数\n");
	scanf("%d%d",&data1,&data2);                  //地址列表应是变量的地址
	printf("输入完毕\n");
	printf("输入的数据为: %d %d\n",data1,data2);  //输出列表应是变量名
	
	fflush(stdin);              //清除输入缓冲区的内容
	
	//字符输入
	printf("\n请输入两个字符\n");
	scanf("%c",&data3);
	scanf("%c",&data4);         //输入时不要使用空格、回车等转义字符
	printf("输入完毕\n");
	printf("输入的字符为: %c %c\n",data3,data4);
	
	//混合输入
	printf("\n请分别输入整数、字符、小数\n");
	scanf("%d%c%f",&data5,&data6,&data7);         //输入时不要使用空格、回车等转义字符(转义字符不会显示在屏幕上)
	printf("输入完毕\n");
	printf("输入的小数为: %d %c %f\n",data5,data6,data7);
	
	//小数输入:当输入为:0.1 0.2 0.3时,把0.1赋予x,0.2被跳过,0.3赋予y
	printf("\n请输入三个小数\n");
	scanf("%f%*f%f",&x,&y);      //%*f表示:该输入项,读入后不赋予相应的变量,即跳过该输入值
	printf("输入完毕\n");
	printf("输入的小数为: %f %f\n",x,y);
	
	printf("\n请输入两个个八位数\n");
	scanf("%5d",&z);             //输入为:12345678时,只把12345赋予变量z,其余部分被截去
	fflush(stdin);               //清除输入缓冲区的内容
	scanf("%4d%4d",&i,&j);       //输入为:12345678时,将1234赋予i,而5678赋予j
	printf("输入完毕\n");
	printf("输入的小数为: %d %d %d",z,i,j);
	
	return 0;
}

程序运行结果为:

程序运行结果
注意:使用scanf函数时,取地址符号“&”不要漏了,输入数据时一定要原样输入(尤其字符输入时,慎用回车换行)!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言:格式化输入输出函数 的相关文章

  • 基于java的物资管理系统设计与实现

    基于java的物资管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的物资管理系统设计与实现的研究背景和动机在于提高物资管理系统的效率和质量 使得物资管理系统更加便捷 快速 准确 从而提高物资管理的水平 该系统的设计和实现主要围
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 基于java的学生成绩管理系统设计与实现

    基于java的学生成绩管理系统设计与实现 I 引言 A 研究背景和动机 学生成绩管理系统是一个重要的教育工具 能够帮助学校管理学生的成绩和考试结果 以便更好地评估学生的教育水平和发展潜力 Java是一种广泛应用的编程语言 具有跨平台 高效
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 基于java的物流信息网系统设计与实现

    基于java的物流信息网系统设计与实现 I 引言 A 研究背景和动机 基于Java的物流信息网系统设计与实现的研究背景和动机 随着互联网的普及和电子商务的快速发展 物流信息网系统已成为现代物流管理的重要组成部分 物流信息网系统能够实现物流信
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • 计算机Java项目|基于SSM的篮球系列网上商城设计与实现

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • JCMsuite应用:光学环形谐振腔模拟

    本案程演示了环形谐振腔的模拟 这种类型的集成光子器件 例如用作升 降滤波器或在传感应用中 当物质或粒子附着在环上时 通过测量其共振频率的位移来检测 对于集成光子电路中的无源光器件 s矩阵通常是研究的热点 它描述了通过端口 波导进入设备的电磁
  • 【固定翼飞行器】用于计算固定翼飞机空气动力学的紧凑涡旋格方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML
  • 【心电图基线估计和去噪方法的群稀疏正则化】带有群稀疏正则化的心电图基线估计和去噪(Matlab实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 【Linux】文件周边001之系统文件IO

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目
  • 2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

    题目描述 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就直接跳过 其余功能都正常 比如 1 23再多一块钱就变为25 2
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现

随机推荐

  • 游戏服务器引擎的设计(二)开发游戏服务器底层 及libuv使用

    服务器底层 个人任务认为稳定 高效 易用最重要 如果非要排个序的话 稳定 gt 易用 gt 高效 我是用的libuv这个库作为基础支持库的 为啥用它 主要是网络库不想自己写了 有现成的最好 这个库是轻量级的库而且跨平台 windows下分装
  • python之批量转换采样率

    需求 将本地音频16K采样率批量转换为8K采样率 批量转换采样率 import os import librosa import soundfile 定义转换采样率的函数 接收3个变量 原音频路径 重新采样后的音频存储路径 目标采样率 de
  • EXCEL VBA与SQL server的交互(二)

    引言 书接上回 接着讲VBA与SQL server的交互 本篇主要内容包括VBA执行存储过程 以及VBA与SQL server交互的一些技术细节 偏技术的会放在文章的最后 不感兴趣的可以直接跳过 正文 我们上回用VBA从SQL server
  • Shell 流程控制

    和Java PHP等语言不一样 sh的流程控制不可为空 如 以下为PHP流程控制写法
  • 基于Hive数据仓库的标签画像实战

    Hive数据仓库 建立用户画像首先需要建立数据仓库 用于存储用户标签数据 Hive是基于Hadoop的数据仓库工具 依赖于HDFS存储数据 提供的SQL语言可以查询存储在HDFS中的数据 开发时一般使用Hive作为数据仓库 存储标签和用户特
  • Matlab快速入门——逻辑与流程控制

    1 if else end A rand 1 10 limit 0 5 B A gt limit if any B fprintf Indices of values gt 4 2f n limit disp find B else dis
  • 视频分辨率无损放大软件 Topaz Video Enhance AI 2.3.0

    视频分辨率无损放大软件 Topaz Video Enhance AI 2 3 0 Topaz Video Enhance AI是一款非常好用的视频分辨率放大软件 用户可以通过这款软件将视频的分辨率进行自定义调节 最高能够将其放大至8K分辨率
  • python导入标准库的关键字是,导入整个Python标准库

    我需要一种方法将整个Python标准库导入我的程序 虽然这看起来似乎是一个坏主意 但我想这样做是因为py2exe会将整个标准库与我的程序打包在一起 所以我的用户可以在我给它们的shell中从中导入它 是否有捷径可寻 加分点 我希望这个动作不
  • NSX-T 问题一(亚信无代理杀毒部署期间,主机传输节点无法安装问题)

    项目场景 某金融客户部署亚信无代理杀毒期间出现了NSX T部署问题 之前由于未查询兼容性列表 使用了NSX T 3 2版本 与亚信厂商沟通后 更改为使用NSX T 3 1 3 5版本 问题描述 部署期间在安装主机传输节点处出现NSX 安装失
  • 【华为OD机试python】称砝码【 2023 Q1 A卷

    题目描述 现有n种砝码 重量互不相等 分别为 m1 m2 m3 mn 每种砝码对应的数量为 x1 x2 x3 xn 现在要用这些砝码去称物体的重量 放在同一侧 问能称出多少种不同的重量 注 称重重量包括 0 数据范围 每组输入数据满足 1
  • Java多线程通信-Semaphore(信号量)

    一 semaphone 信号量 Semaphone 信号量 是一个同步工具类 用来控制同时访问某个资源的线程数量 还可以用来实现某些资源池 或者给容器添加边界 Semaphone管理着一组 虚拟 的许可 permit 许可的初始数量可通过构
  • C++中的多态——理解虚函数表及多态实现原理

    多态及其实现原理 一 多态的概念 概念 构成条件 二 虚函数的重写 重写的定义 重写的特殊情况 override和final关键字 区分重写 重载 重定义 抽象类的概念 三 多态的实现原理 父类对象模型 补充 生成默认构造方法的场景 子类对
  • Kubenetes 集群Master与Node节点

    Master节点 Kubernetes里的Master指的是集群控制节点 在每个Kubernetes集群里都需要有一个Master来负责整个集群的管理和控制 基本上Kubernetes的所有控制命令都发给它 它负责具体的执行过程 我们后面执
  • Python所有方向的学习路线图,让Python初学者少走弯路

    举个例子 如果你要学习爬虫 那么你就去学Python爬虫学习路线图上面的知识点 这样学下来之后 你的知识体系是比较全面的 比起在网上找到什么就学什么 容易造成重复学 有时候也会学到一些用处不大的东西 还有一点就是 有了学习路线图 你就能够明
  • Vue 并排放置两个div的写法

    Vue的开发文档 Layout布局模块 https element eleme cn zh CN component select 样例 使用
  • 华为OD机试 - 等和子数组最小和(Java)

    题目描述 给定一个数组nums 将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 组内元素和的最小值 输入描述 第一行输入 m 接着输入m个数 表示此数组nums 数据范围 1 lt m lt 50 1 lt nums i lt
  • MySQL高级学习笔记

    目录 1 MySQL数据库逻辑架构 1 网络连接层 2 服务层 MySQL Server 1 连接池 Connection Pool 2 系统管理和控制工具 Management Services Utilities 3 SQL接口 SQL
  • 信息系统、课设、毕设

    信息系统 课设 毕设 可使用技术 后端 PHP Node js等 前端 jQuery vue等 UI layui elementui等 数据库 SQLserver MySQL等 APP uniapp等 适合 进销存ERP系统 商城 网站 A
  • mac卸载idea

    idea只有30天的试用期 比较穷 买不起正版 又不想用破解 是因为发现破解的版本写代码的时候反应好迟钝 一个报红的问题修复后半天还不好 到期了只能完全卸载重新装一遍 这样也还有个好处 能用最新版 一直在追求最新版的路上 给像我一样的强迫症
  • C语言:格式化输入输出函数

    C语言 格式化输入输出函数 1 格式化输出函数 printf 2 格式化输入函数 scanf C语言提供的格式化输入输出函数的原型在头文件stdio h中声明 在使用时应在程序头部包含该文件 include