C语言从入门到精通 第四章(数据的输入和输出)

C语言总结(数据输入输出) C语言总结第四章、数据输入与输出数据输出字符输出函数格式输出函数数据输入字符输入函数格式输入函数 第四章、数据输入与输出 C语言无I/O语句,I/O操作由函数实现 putchar( ) getchar( ) printf( ) scanf( ) puts( ) gets( ) #include <stdio.h> 或#include “stdio.h” 数据输出 字... 阅读详情

  写在前面:

  1. 本系列专栏主要介绍C语言的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程。
  2. 除了参考下面的链接教程以外,笔者还参考了其它的一些C语言教材,笔者认为重要的部分大多都会用粗体标注(未被标注出的部分可能全是重点,可根据相关部分的示例代码量和注释量判断,或者根据实际经验判断)。
  3. 如有错漏欢迎指出。

参考教程:C语言程序设计从入门到进阶【比特鹏哥c语言2024完整版视频教程】(c语言基础入门c语言软件安装C语言指针c语言考研C语言专升本C语言期末计算机二级C语言c语言_哔哩哔哩_bilibili

一、概述

1、输入输出的概念

(1)从前面的程序可以看到,一个能实现一定功能的程序基本都包含输入输出,至少没有输出的程序是没有任何意义的。

(2)所谓输入输出是以计算机为主体而言的,从计算机向输出设备(如显示器、打印机)输出数据的过程称为输出,从输入设备(如键盘、光盘、扫描仪)向计算机输入数据的过程称为输入。

2、C语言中实现输入和输出

(1)C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。

(2)在C标准库中提供了一些输入输出函数,例如printf函数和scanf函数,需要注意的是,它们并不是C语言的关键字,只是库函数的名字而已。

(3)C语言函数库中有一批标准输入输出函数,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的,其中有putchar(输出字符)、getchar(输入字符)、printf(输出)、scanf(格式输入)、puts(输出字符串)和gets(输入字符串)。

(4)使用C语言函数库中的标准输入输出函数时,需要在程序文件的开头用预处理指令“#include <文件名>”把头文件stdio.h包含放在本程序中。

二、用printf函数输出数据

1、printf函数的一般格式

        printf(格式控制, 输出表列)

(1)“格式控制”是用双撇号括起来的一个字符串,称为格式控制字符串,简称格式字符串,它包含两个信息:

①格式声明。格式声明由“%”和格式字符组成,如“%d”、“%f”等,它的作用是将输出的数据转换为指定的格式后输出。

②普通字符。普通字符即需要在输出时原样输出的字符。

(2)输出表列是程序需要输出的一些数据(逗号分隔),可以是常量、变量或表达式。

(3)下面是printf函数的一个具体例子,底纹为蓝色的就是格式声明,它们按顺序对应后面输出表列(逗号分隔)中的表达式,输出时格式声明会分别被它们所对应的表达式的内容所替换,其它的都是非格式声明的普通字符,它们全部按原样输出。

(4)由于printf是函数,因此格式字符串和输出表列实际上都是函数的参数。

2、常用的格式字符

(1)d格式符:用来输出一个有符号的十进制整数,在输出时按十进制整型数据的实际长度输出,正数的符号不输出。

①%d:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。

②%md:指定输出数据所占的列数为m,如果指定的列数小于实际数据长度,则以实际数据长度输出;如果指定的列数大于实际数据长度,则在指定数据长度内以右对齐的方式输出。

③%-md:指定输出数据所占的列数为m,如果指定的列数小于实际数据长度,则以实际数据长度输出;如果指定的列数大于实际数据长度,则在指定数据长度内以左对齐的方式输出。

(2)c格式符:用来输出一个字符。

(3)s格式符:用来输出一个字符串。

(4)f格式符:用来输出实数(包括单精度、双精度、长双精度),以小数形式输出。

①%f:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数,系统处理的方法一般是把实数中的整数部分全部输出,小数部分输出6位。

②%m.nf:指定数据宽度和小数位数,并且输出的数据在输出数据宽度内向右对齐,“%m.nf”表示指定输出的数据占m列,其中包括n位小数,对其后一位采取四舍五入方法处理。

③%-m.nf:指定数据宽度和小数位数,并且输出的数据在输出数据宽度内向左对齐,“%-m.nf”表示指定输出的数据占m列,其中包括n位小数,对其后一位采取四舍五入方法处理。

(5)e格式符:指定以指数形式输出实数。(用“e”格式符时指数用“e”表示,用“E”格式符时指数用“E”表示)

①%e:不指定输出数据的长度,系统处理的方法一般是给出数字部分的小数位为6位,指数部分占5列,数值按标准化指数形式(小数点前有且只有1位非零数字)输出。

②%m.ne:指定数据宽度和小数位数,并且输出的数据在输出数据宽度内向右对齐,“%m.nf”表示指定输出的数据占m列,其中包括n位小数,对其后一位采取四舍五入方法处理。

③%-m.ne:指定数据宽度和小数位数,并且输出的数据在输出数据宽度内向左对齐,“%-m.ne”表示指定输出的数据占m列,其中包括n位小数,对其后一位采取四舍五入方法处理。

(6)u格式符:用来输出一个无符号的十进制整数,在输出时按十进制整型数据的实际长度输出,正数的符号不输出。

①%u:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。

②%mu:指定输出数据所占的列数为m,如果指定的列数小于实际数据长度,则以实际数据长度输出;如果指定的列数大于实际数据长度,则在指定数据长度内以右对齐的方式输出。

③%-mu:指定输出数据所占的列数为m,如果指定的列数小于实际数据长度,则以实际数据长度输出;如果指定的列数大于实际数据长度,则在指定数据长度内以左对齐的方式输出。

(7)p格式符:用来输出一个用十六进制数表示的地址,通常用来输出指针变量。

(8)%格式符:用来输出一个百分号,它不对应输出表列。

3、其它格式字符

(1)i格式符:作用与d格式符相同,但是一般习惯使用d格式符。

(2)o格式符:将内存单元中的各位的值(0或1)按八进制形式输出,输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出,不输出前导符“0”(C语言中表示八进制数需加前导符“0”,如“080”,相当于十进制的64)。

(3)x格式符:将内存单元中的各位的值(0或1)按十六进制形式输出,输出的数值不带符号,即将符号位也一起作为十六进制数的一部分输出,十六进制数的a~f以小写形式输出,不输出前导符“0x”(C语言中表示十六进制数需加前导符“0x”,如“0x40”,相当于十进制的64)。

(4)X格式符:将内存单元中的各位的值(0或1)按十六进制形式输出,输出的数值不带符号,即将符号位也一起作为十六进制数的一部分输出,十六进制数的A~F以大写形式输出,不输出前导符“0X”(C语言中表示十六进制数也可加前导符“0X”,如“0X40”,相当于十进制的64)。

(5)g格式符:用来输出浮点数,系统自动在f格式和e格式中选择输出长度较短的格式,不输出无意义的0。(用“g”格式符时指数用“e”表示,用“G”格式符时指数用“E”表示)

4、格式附加字符

(1)综合上面的介绍,格式声明的一般形式可以表示为

        % <附加字符><格式字符>

(2)printf函数中用到的格式附加字符:

字符

说明

m(代码一个正整数)

数据最小宽度

n(代码一个正整数)

对实数,表示输出n位小数;对字符串,表示截取的字符个数

l

以长整型整数形式输出,可加在格式字符串d、o、x、u前面

ll

以双长整型整数形式输出,可加在格式字符串d、o、x、u前面

h

以短整型整数形式输出,可加在格式字符串d、o、x、u前面

-

输出的数字或字符在域内向左靠

(3)正确使用格式附加字符可以避免在输出变量时发生“整型提升”或者“高位截断”:

①比如输出一个短整型变量,如果对应的格式字符为d,那么会出现整型提升,这时可以添加附加字符h,就不会发生整型提升了。

②比如输出一个双长整型变量,如果对应的格式字符为d,那么会出现高位截断,这时可以添加附加字符ll,就不会发生高位截断了。

三、用scanf函数输入数据

1、scanf函数的一般形式

        scanf(格式控制, 地址表列)

(1)“格式控制”的含义同printf函数。

(2)“地址表列”是由若干个地址组成的表列(逗号分隔),可以是变量的地址或字符串的首地址。

2、scanf函数中的格式声明

(1)与printf函数中的格式声明相似,以“%”开始,以一个格式字符结束,中间可以加入附加的字符。

(2)scanf函数中用到的格式字符:

格式字符

说明

d,i

输入有符号的十进制整数

u

输入无符号的十进制整数

o

输入无符号的八进制整数

x,X

输入无符号的十六进制整数

c

输入单个字符

s

输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志’\0’作为其最后一个字符

f

输入实数,可以用小数形式或指数形式输入

e,E,g,G

与f作用相同

(3)scanf函数中用到的格式附加字符:

字符

说明

l

输入长整型数据(%ld、%lo,%lx,%lu)以及double型数据(%lf或%le)

ll

输入双长整型数据(%lld、%llo,%llx,%llu)

h

输入短整型数据(%hd,%ho,%hx)

域宽

指定输入数据所占宽度(列数),域宽应为正整数

*

本输入项在读入后不赋给相应的变量

3、使用scanf函数时应注意的问题

(1)scanf函数中的格式控制后面应当是变量地址(往后会详细介绍,目前知道变量名前加“&”表示该变量的地址即可),而不是变量名。

(2)如果在格式控制字符串中除了格式声明以外还有其它字符,则在输入数据时在对应位置上应输入与这些字符相同的字符。

(3)在用“%c”格式声明输入字符时,空格字符和转义字符都作为有效字符输入,所以在涉及字符输入时不要轻易输入空格。

(4)在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),则认为该数据结束。

四、字符输入输出函数

1、用putchar函数输出一个字符

(1)putchar函数的一般形式为

        putchar(c)

(2)“putchar(c)”的作用是输出是一个字符,具体输出什么字符和它的参数c有关:

①参数c可以是一个字符变量,那么输出的就是该字符变量存储的ASCII码所对应的字符。

②参数c可以是一个字符常量,那么输出的就是这个字符常量。

③参数c可以是0~127之间的一个整数,那么输出的就是这个整数作为ASCII码所对应的字符。

④如果参数c是一个表达式,则先将表达式的结果计算出来,再把它作为参数按上面的规则进行字符的输出。

2、用getchar函数输入一个字符

(1)getchar函数的一般形式为

        getchar()

(2)“getchar()”的作用是从计算机终端(一般是键盘)输入一个字符,然后将该字符作为返回值,返回值可以赋给字符变量或整型变量,也可以不赋给任何变量,而是作为表达式的一部分。

(3)如果一口气输入一大串字符,getchar每被调用一次,就会从输入字符串的左边开始取一个字符(getchar甚至可以获取回车,返回回车对应的转义字符),直到取完为止。

C语言数据输出和输入介绍 本文将深入介绍C语言中数据输出和输入的相关知识,包括标准输出和输入函数、格式化输出和输入、文件输入和输出等内容,帮助读者全面了解和掌握这一重要概念。数据输出和输入是C语言程序设计中至关重要的一部分,它们提供了与用户和外部环境交互的方式,是程序执行的关键环节。除了标准输入和输出外,C语言还支持文件输入和输出操作。通过文件输入和输出,程序可以读取或写入外部文件中的数据,实现数据的持久化存储和共享。上述代码提示用户输入一个整数,并将输入的整数存储到变量num中,然后将输入的整数再次输出到标准输出。 阅读详情

相关推荐

C语言——输入输出

所谓输入输出是以计算机为主机而言的,往内存中输入数据为输入,反之从内存中输出数据为输出。

attitude_lu的博客 1808

【谭浩强C程序设计精讲 7】数据的输入输出

资深一线科研型教师带你一起温故C程序设计。本文重点介绍数据的输入输出相关知识,包括格式输入输出函数和字符输入输出函数,格式字符和附加格式字符详解。

自强不息怀壮志以长行,厚德载物携梦想而抚凌。 2479

c语言入门到精通,经验分享

C语言作为一种编程语言,它的发展可谓历经千辛万苦。我们总是在说,程序员所做的就是天天敲代码,但是单单敲代码可是永远也学不会C语言的更深一层的所蕴含的知识。 所以说,学习C语言,学的扎实的话,5年左右可能你可以说你入门了,10年左右你可能说你掌握了,但是要说到精通,可不是一般人所能想象的。 小编推荐一个学C语言/C++的学习裙【  玖四捌,玖伍四,四捌四 】 入门是什么? 当你是初学者的...

2912

第二章 格式化处理

format_spec为格式化解释。当参数format_spec为空时,等同于函数str(value)的方式。value为要转换的数据。format_spec可以设置非常复杂的格式转换参数,实现比较完备的数据格式处理模板。format_spec格式控制符可以分为文字对齐、填充值、标志设置、格式化、类型转换、千位符(数字分组)等主要应用。主要参数说明:1)fill(填充值):此处可以填写任何字符,通常与align、width一起使用,实现指定位数字符填充。通常用0、*、#等进行填充。

qq_42226855的博客 1274

C语言数据的输入输出学习教案.pptx

C语言数据的输入输出学习教案.pptx

极智量化平台实战:5分钟教你用Python实现双均线交易策略(附完整代码)

本文详细介绍了如何在极智量化平台上使用Python实现双均线交易策略,包括数据获取、信号生成、回测分析和策略优化。通过完整的代码示例和实战演示,帮助开发者快速掌握量化交易系统的基本原理和应用方法,实现自动化交易。

weixin_29269441的博客 485

C语言第三章第5节数据的输出学习导案

则语句 printf("%d\n",z=(x%y,x/y));C.输出为213.82 D.输出为-213.82。6.以下程序段的输出结果是 int a=1234;A.输出格式描述符的域宽不够,不能输出 B.输出为213.83。C.2,E D.输出项与对应的格式控制不一致,输出结果不确定。

老张的博客 816

百度文心大模型ERNIE全面解析

文章摘要:本文汇总了多个Python自然语言处理(NLP)工具库的应用实例,涵盖百度文心大模型ERNIE、Hugging Face Transformers、StanfordNLP、SymSpell等主流框架。内容涉及文本预处理、情感分析、命名实体识别、机器翻译、文本纠错等典型NLP任务,并包含ERNIE-Lite、BART、T5等模型的调用示例。各工具库的特色功能包括:ERNIE的知识增强技术、Transformers的多任务统一接口、SymSpell的高效拼写纠正等。文章还提供了知识图谱构建、Rasa对

keny-大成的博客 2524

《C语言及程序设计》实践项目——数据的输出

返回:贺老师课程教学链接  C语言及程序设计初步  【阅读程序题】1、写出以下程序的输出结果,再在计算机上运行程序。对比两结果是否相同,以此检查自己的学习效果。2、遇到在视频中未讲的格式控制符,上网搜索发现其用途。(1)#include int main() { int a=12345; float b=-198.345, c=6.5; printf("a=%4d,b=%

迂者-贺利坚的专栏 2394

DP接口详解:从主链路到AUX通道的完整解析(附常见问题排查)

本文深入解析DP接口的三大核心子系统:主链路的高速数据传输、AUX通道的智能协商以及HPD信号线的即时响应。详细介绍了DP接口的物理层设计要点、链路训练与均衡技术,并提供了常见故障排查指南,帮助工程师解决实际应用中的技术难题。

weixin_30790841的博客 461

给宇树Go2机器人装‘眼睛’:在Jetson Orin Nano上从零部署YOLOv5的保姆级避坑实录

本文详细介绍了在Jetson Orin Nano上为宇树Go2机器人部署YOLOv5视觉系统的完整流程,涵盖硬件选型、环境配置、模型优化及系统集成等关键步骤。针对机器人应用场景特有的离线部署、版本冲突和实时推理等挑战,提供了实用的解决方案和性能优化技巧,帮助开发者快速实现机器人的视觉能力升级。

weixin_29169505的博客 378

C语言——数据的输入输出

输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法

plj521的博客 3万+

【LVGL】从HTML到LVGL:嵌入式UI的设计迁移与落地实践

嵌入式UI迁移实践:从HTML到LVGL 本文介绍了将HTML/CSS设计的UI原型迁移到嵌入式系统(LVGL)的完整流程,重点涉及"HTML→Figma→LVGL"的三步转换方法。具体内容包括: 设计迁移流程:通过Figma作为中间桥梁,将HTML原型转化为标准设计资产,再适配到LVGL库; 工具与参数准备:详细列出了设计迁移所需的工具链和需要提取的核心设计参数; Figma还原步骤:分组件讲解如何在Figma中1:1还原HTML设计,包括标题栏、压力显示区、图表区等核心组件; LVG

ymlmail的博客 1970

C语言入门篇——输入输出篇

系统调用是软中断,频繁调用,需要频繁陷入内核态,这样的效率不是很高,而 printf 实际是向用户空间的 IO 缓冲写,在满足条件的情况下才会调用 write 系统调用,减少 IO 次数,提高效率。一般都使用一个空格。虽然编译的时候不会报错,但从程序功能的角度讲就是错的,则无法实现我们需要的功能。将这两个字符转化成十进制数 30,最后通过 “取地址 input” 找到变量 input 的地址,再将数字 30放到以变量 input 的地址为地址的变量中,即变量 input 中,所以最终的输出结果就是。

sakura0908的博客 2万+

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1547

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1444

C语言输入和输出

文章目录一、数据输入二、数据输出三、断章取义四、printf输出1、输出描述性的文字2、输出整数3、输出字符4、输出浮点数5、输出字符串6、输出多个内容7、示例(book12.c)五、scanf输入1、输入整数2、输入字符3、输入浮点数4、输入字符串5、输入多个内容6、示例(book13.c)六、注意事项七、课后作业八、版权声明 一、数据输入 编写程序的主要目的就是为了处理数据。数据从哪里来?数据...

C语言实战技术 5182

Open3D——直通滤波(python详细过程版)【2025最新版】

python就一个字:强。博客长期更新,本文最近更新时间为:2025年1月11日。

点云侠的博客 7513

【C语言】掌握C语言中的浮点型数据输入和输出

在C语言中,处理浮点型数据的输入和输出是基础技能。使用scanf函数可以从标准输入读取浮点型数据,其中%f用于读取float类型,%lf用于读取double类型。对于输出,printf函数同样使用%f和%lf来格式化显示浮点数,默认保留小数点后6位小数。通过修改格式说明符(如%.3f),可以控制输出的精度。掌握这些操作将为你的数值计算和数据处理任务奠定良好的基础,帮助你更高效地进行编程开发。

科技改变人类,技术成就未来 7199

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言-数据输入与输出

数据的输入与输出机制 摘要: 本文介绍了C语言中的数据输入输出机制。主要内容包括:输入(input)与输出(output)的基本概念,标准输入输出库stdio.h的使用,以及缓冲区的原理和应用。重点阐述了三种缓冲区类型(全缓冲、行缓冲、无缓冲)及其刷新条件,解释了printf和scanf函数的基本用法和格式控制符。文章还详细说明了数据输入输出时的格式控制技巧,包括整型、浮点型等数据的格式化输出方式。通过实例演示了如何正确使用输入输出函数,并强调了缓冲区在提高数据传输效率中的重要作用。

Dd000110的博客 2943

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C语言中的输入和输出

在C语言中,有三个函数可以从键盘获得用户输入getchar:输入单个字符,保存到字符变量中gets:输入一行数据,保存到字符串变量中scanf:格式化输入函数,一次可以输入多个数据,保存到多个变量中。...

喜欢编程,将自己会的知识分享给大家 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言如何进行数据的输入输出(标准输入输出和文件流)

这里我想把C语言中遇到的一些有关数据输入输出的方法总结一下输入和输出的基本内容包括以下几个函数:getchar、scanf、gets、fgets、fprintf、fwrite、putcahr、printf、puts、fputs、fscanf、fread以及标准输入输出流和文件流的知识。提示:以下是本篇文章正文内容,下面案例可供参考。

zhuquanshuai的博客 3634

C语言数据输入与输出

C语言数据输入与输出

ITTechnologyHome 2万+

C语言从入门到精通需要多久?你真的知道吗!

C语言作为一种编程语言,它的发展可谓历经千辛万苦。我们总是在说,程序员所做的就是天天敲代码,但是单单敲代码可是永远也学不会C语言的更深一层的所蕴含的知识。 所以说,学习C语言,学的扎实的话,5年左右可能你可以说你入门了,10年左右你可能说你掌握了,但是要说到精通,可不是一般人所能想象的。 入门是什么 当你是初学者的时候,你拿着一本C语言程序设计,看着满书的代码,心里满是疑虑,为什么自己看不懂这些...

s226916240的博客 4438
上一篇: C语言从入门到精通 第三章(数据的运算和表达式)
下一篇: C语言从入门到精通 第五章(选择结构程序设计)
Zevalin爱灰灰
Zevalin爱灰灰 优质创作者: 嵌入式与硬件开发技术领域 优质创作者: 嵌入式与硬件开发技术领域
博客等级 码龄3年 7137粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值