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

news2024/11/19 7:25:30

数据的输入输出

  • 前言:
  • 一、格式输入输出函数
    • 1.格式输出函数printf()
    • 2.格式输入函数scanf()
  • 二、字符输入输出函数
    • 1.字符输出函数putchar()
    • 2.字符输入函数getchar()
  • 三、字符串输入输出函数
    • 1.字符串输出函数puts()
    • 2.字符串输入函数gets()
  • 四、函数的区别
    • 1.gets()函数和scanf()函数的区别
    • 2.puts()函数和printf()函数的区别
    • 3.getchar()函数和scanf()函数的区别
    • 4. putchar()函数和printf()函数的区别

前言:

C语言中没有专门的输入输出语句,C语言的输入输出是靠库函数来实现的。

一、格式输入输出函数

1.格式输出函数printf()

格式:
printf(“格式控制字符串”,输出列表);
功能:
按格式控制字符串规定的格式,向输出设备(一般为显示器)输出,输出列表中各输出项的值。
如:
在这里插入图片描述
格式控制:由双引号括起来的字符串,用于指定输出格式。
—普通字符:按原样输出的字符。
—格式说明:用来指定输出数据的输出格式。
形式:%[修饰符]格式字符
输出表列:需要输出的数据列表,彼此间用逗号分隔,可以是任意合法的表达式。
在这里插入图片描述
在这里插入图片描述

补充:
在这里插入图片描述
说明:
1)d格式符。
作用:输出一个带符号的十进制整数(正数不输出符号)
格式:
在这里插入图片描述
例子:

#include <stdio.h>
int main()
{
    int x = 123;
    printf("|%d|\n", x);
    printf("|%5d|\n", x);
    printf("|%-5d|\n", x);
    printf("|%+5d|%+5d|\n", x,-x);
    printf("|%-5d|%-5d|\n", x,-x);
    printf("|%2d|\n", x);
    return 0;
}

测试:
在这里插入图片描述
2)o、x和u格式符。
作用:输出一个无符号的八进制、十六进制或十进制无符号整数。
3)c格式符。
作用:用来输出一个字符。
注意:
一个整数,如果在0~~127之间,也可以用字符形式输出,系统会将该整数转换成对应的ASCII码字符。
4)s格式符。
作用:用来输出一个字符串。
格式:
在这里插入图片描述
5)f格式符。
作用:以小数形式输出单、双精度实数。
格式:
在这里插入图片描述
6)e格式符。
作用:以标准化指数形式输出实数。(小数点前必须有而且只能有一位为非零数字)
格式:
在这里插入图片描述
例子:

#include <stdio.h>
int main()
{
    char ch = 'a';
    float x = 123.456f;
    double y = 321.564321;
    float f = 123.456f;
    printf("%3c\n",ch);
    printf("%8.2s\n","computer");
    printf("%f\n",x);
    printf("%.0lf\n",y);
    printf("%10.2e\n", f);
return 0;
}

测试:
在这里插入图片描述
注意
输出表列可以是变量、常量、数组元素、函数引用、及带运算符的表达式。
例:printf(“%f%d%d%f”,3.14,a+b,x,cos(y));
输出列表中各输出项与各格式说明必须按照从左到右的顺序在类型上一一匹配。
如果实型数据用%d输出,结果出错,整型数据用%f输出,结果为零。
当格式符比输出项多时,多出来的格式符输出不定值;当格式符比输出项少时,多出来的输出项不输出。
输出表列求值顺序:vc是从右到左顺序求值,输出任然是从左到右。
可以在格式符的域宽前面加0,用来补0.
例:printf("|%-05d|\n",12); //输出|12 |
printf(“|%05d|\n”,12); //输出|00012|
除了X、E、G格式符外,其他格式符必须用小写字母。

2.格式输入函数scanf()

格式:
scanf(“格式控制”,地址表列);
功能:
按格式控制所规定的格式,从指定的输入设备(一般为键盘)上把数据输入到指定的变量中。
在这里插入图片描述
格式控制:
—普通字符:需原样输入的字符。
—格式说明:用于指定输入数据的输入格式。
形式:%[修饰符]格式字符。
地址表列:给出个变量的地址。
—地址是由‘&’运算得到的。
—‘&’是取地址运算符,得到变量在内存中的地址,单目运算符,右结合性。
在这里插入图片描述

在这里插入图片描述
格式输入的使用与注意:
1)输入数据时采用的分隔符应与格式控制中的分隔符一致。
格式控制中无普通字符时,输入数值型数据可用空格、tab键、回车键作分隔符。
如:
int a,b;float f,e;
scanf(“%d%d”,&a,&b);//输入23空格456回车
2)输入数据时不可指定精度,但可指定宽度。
例:scanf(“%7.2f”,&a);//修饰符错误
3)输入格式符带有* 表示该数据不赋值。
例:scanf(“%d%*d%d”,&a,&c);
输入:12空格34空格567回车;输出a=12,c=567,34被跳过
4)无符号数可用%d、%o、%x格式输入。
5)用c格式符输入字符时,空格、转义字符均为有效字符。(——>回车的意思)
scanf(“%c%c%c”,&a,&b,&c);
若键入:A空格B空格C回车 //则a=A,b=空格,c=B
若键入:A回车B回车 //则a=A,b=回车,c=B
6)%d、%f、%s等在读入数字时,前导的空字符被跳过。
在下列情况下可认为数据输入结束:
遇空格、回车、tab键;
遇宽度结束;
非数值字符。(比如x)
7)double必须用%lf(或%le)
float必须用%f(或%e)
例:

#include <stdio.h>
int main()
{
    int a; float b; char c;
    scanf("%2d%3f%c", &a, &b, &c);
    printf("a=%d,b=%f,c=%c\n", a, b, c);
    return 0;
}

在这里插入图片描述
注意:
格式符%f%c之间不能有空格,要直接输入。

二、字符输入输出函数

1.字符输出函数putchar()

格式:
putchar(c);
功能:
向终端输出一个字符。
说明:
c为参数,可以是字符型变量、整型变量、字符型常量、表达式或者转义字符,但只能是单个字符而不能是字符串。

2.字符输入函数getchar()

格式:
getchar();
功能:
从键盘读入一个字符。
char ch=getchar();
说明:
只能读取一个字符;该字符可赋给字符变量、整型变量或作为表达式的一部分。

三、字符串输入输出函数

1.字符串输出函数puts()

格式:
puts(字符数组名);puts(字符串);
功能:
输出字符数组的值,遇到‘\0’结束输出。
说明:
—puts()一次只能输出一个字符串,输出字符串后自动换行(\n),可以输出转义字符。

2.字符串输入函数gets()

格式:
gets(字符数组名);
功能:将输入的字符串赋给字符数组,输入时,遇到第一个回车键(\n)结束输出,可以结束空格和制表符。
说明:
函数gets()只能一次输入一个字符串。

四、函数的区别

1.gets()函数和scanf()函数的区别

——gets()函数同scanf()函数一样,在读入一个字符串后,系统自动在字符串后加上一个字符串结束标志‘\0’。
——gets()以Enter结束输入,但可以接受空格,会舍弃最后的回车符!并且gets()可以读取多个字符。
不同点:
scanf不能接受空格、制表符Tab、回车;
gets能够接受空格、制表符Tab和回车;
scanf :当遇到回车,空格和tab键会自动在字符串后面添加’\0’,但是回车,空格和tab键仍会留在输入的缓冲区中。
gets:可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中

#include <stdio.h>
int main()
{
    char str1[20], str2[20];
    gets(str1);
    scanf("%s", str2);
    printf("str1:%s\n", str1);
    printf("str2:%s\n", str2);
    return 0;
}

测试:
在这里插入图片描述

2.puts()函数和printf()函数的区别

——puts()函数一次只能输出一个字符串,输出字符串后自动换行(\n)(将‘\0’自动换行为‘\n’),可以输出转义字符。
——printf()函数可以同时输出多个字符串,并且能灵活控制是否换行。
例:

#include <stdio.h>
int main()
{
    char str1[] = "student", str2[] = "teacher";
    puts(str1);//自动\n
    puts(str2);
    printf("%s", str1);
    printf("%s\n%s", str1,str2);
    return 0;
}

测试:
在这里插入图片描述

3.getchar()函数和scanf()函数的区别

——从标准输入(键盘)里读取下一个字符。返回值为用户输入的ASCⅡ码,出错返回-1,用户输入的字符被存放在键盘缓冲区中,直到输入回车键才从缓冲区依次提取字符,当用户键入回车之后,getchar会从输入流中读取第一个字符。
不同点:
scanf遇到 回车(enter),空格,TAB 就会结束一次输入,不会接收空格。
getchar函数只以回车、Enter结束输入,接受空格符。
scanf在一次输入结束后,不会舍弃最后的回车符(即回车符会残留在缓冲区中)
getchar回车作为结束的标志,所以在敲回车时’\n’也被存入缓存
scanf()在读取数字时会跳过空格、回车(Enter)、制表符和换行符!
getchar函数只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符。

代码1:
```c
#include <stdio.h>
int main()
{
    char c1=0, c2=0;
    c1=getchar();//\n留在缓冲区
    c2 =getchar();//遇到\n什么都没输出
    printf("%c,%c", c1,c2);
    return 0;
}

在这里插入图片描述
代码2:
#include <stdio.h>
int main()
{
char c1=0, c2=0;
c1=getchar();
getchar();
c2 =getchar();
printf("%c,%c", c1,c2);
return 0;
}
``
测试:
在这里插入图片描述

提升:
需要用getchar()吃掉回车的几种情况:

  1. 前面有scanf 后面也要用scanf()时,中间要用一个空的getchar()吃回车;
  2. 前面有scanf,后面要用ch=getchar()接收字符时,中间要用一个空的getchar()吃回车;
  3. 2个ch=getchar()中间需要一个空的getchar()吃回车。

4. putchar()函数和printf()函数的区别

——putchar(a)向终端输出一个字符。其中a可以是被单引号引起来的一个字符[putchar(‘e’)],可以是介于0~127之间的一个十进制整型数(包含0和127)[putchar(23)] ,也可以是事先用char定义好的一个字符型变量 并且只能输出单个字符。
——printf()格式化输出函数, 用于向标准输出设备按规定格式输出信息, 并且可以输出各种数据类型,还可以有参数。
不同点:
putchar会有返回值,并且返回值为()内参数值 转换为的unsigned int 值 如果遇到错误或者文件结束,putchar() 返回EOF,而printf()函数返回值为字符串的长度。
测试:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JUC并发工具类--阻塞队列BlockingQueue

JUC并发工具类--阻塞队列BlockingQueue 队列队列&#xff08;Queue接口&#xff09;提供的方法 阻塞队列阻塞队列&#xff08;BlockingQueue接口&#xff09;提供的方法应用场景JUC包下的阻塞队列如何选择适合的阻塞队列选择策略线程池对于阻塞队列的选择 队列 是限定在一端进…

Servlet技术实现服务端,Android平台作为客户端,实现一个个人店铺

背景&#xff1a; 使用Servlet技术实现服务端&#xff0c;使用Android平台作为客户端&#xff0c;实现一个个人店铺&#xff0c;店铺商品不限。功能要求如下&#xff1a; 1. 提供登录、注册功能&#xff1b;&#xff08;10分&#xff09; 2. 首页面包括“商品列表”子页面、“…

ATA-8000系列射频功率放大器——在生物医学中的应用

ATA-8000系列射频功率放大器——在生物医学研究中的应用 ATA-8000系列是一款射频功率放大器。其P1dB输出功率500W&#xff0c;饱和输出功率最大1000W。增益数控可调&#xff0c;一键保存设置&#xff0c;提供了方便简洁的操作选择&#xff0c;可与主流的信号发生器配套使用&…

VulnHub靶机渗透:SKYTOWER: 1

SKYTOWER: 1 靶机环境介绍nmap扫描端口扫描服务扫描漏洞扫描总结 80端口目录爆破 3128端口获取立足点获取立足点2提权总结 靶机环境介绍 https://www.vulnhub.com/entry/skytower-1,96/ 靶机IP&#xff1a;192.168.56.101 kali IP&#xff1a;192.168.56.102 nmap扫描 端口扫…

h5手写签名示例

前言 业务中需要用户进行签字&#xff0c;如何让用户在手机端进行签字&#xff1f; 示例如下 代码已分享至Gitee: https://gitee.com/lengcz/qianming 原示例&#xff1a; https://www.jq22.com/jquery-info13488 H5实现手写签字 创建一个html页面 <!DOCTYPE html> …

<Oracle>《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》(第一部分)

《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》&#xff08;第一部分&#xff09; 1 说明1.1 前言1.2 资源下载 2 安装步骤2.1 上传安装包2.2 下载数据库预安装包2.3 安装数据库预安装包 1 说明 1.1 前言 本文是Linux系统命令行模式安装Oracle数据库的学习实验记录…

【American English】实验室常用口语对话

不懂不丢人&#xff0c;不懂装懂才丢人。最近有点犯这毛病&#xff0c;多写一些东西消除一下。 无论什么知识都是多了才能成体系&#xff0c;更多自己在美国的小总结可见专栏&#xff1a;English。 文章目录 初次见面日常问候找寻某个东西找寻某个人 初次见面 Nice to meet you…

Linux之tar安装

目录 Linux之tar安装 定义 工作过程 语法格式 参数及用法 使用源代码安装软件的优点 注意&#xff1a;源代码编译环境 操作流程 解包 —— tar 配置 —— ./configure 编译 —— make 安装 —— make install 案例 --- 安装Apache服务 1.获取安装包地址并下载 2…

衣服面料相关基础

总结自 BiliBili视频&#xff1a;原来衣服的面料还能这么选&#xff0c;几个方法教你买到优质的短袖&#xff0c;再也不怕买衣服踩坑了 面子里子 既不能皱巴巴 又不能不透气 混纺 涤纶 粘纤 氨纶 涤纶 不变性 挺阔感 氨纶 弹性 粘纤 吸水透气40-50% 怕热 真丝与亚麻 …

Python 进阶(三):Python使用ORM框架SQLAlchemy操作Oracle数据库

Python使用ORM框架SQLAlchemy操作Oracle数据库 前言1. 安装Oracle Instant Client2. 安装依赖库3. 导入模块并创建引擎4. 操作oracle数据库4.1 新增数据4.2 查询数据4.3 更新数据4.4 删除数据 前言 要详细连接Oracle数据库并使用SQLAlchemy进行操作&#xff0c;按照以下步骤进…

云计算与OpenStack简介

文章目录 云计算与OpenStack简介什么是云服务模式部署模型 Openstac概述Openstack服务组件 云计算与OpenStack简介 什么是云 云是一种服务&#xff0c;就像我们去餐厅吃饭一样&#xff0c;只需要点菜&#xff0c;不需要知道厨师怎样烹饪食物。在云中&#xff0c;用户也只需要…

chatgpt赋能python:Python数据预处理:优化数据分析的重要步骤

Python数据预处理&#xff1a;优化数据分析的重要步骤 在数据分析过程中&#xff0c;数据预处理是非常重要的步骤。在这个阶段&#xff0c;我们可以清洗、转换和整理数据&#xff0c;以便更好地进行数据分析和建模。Python是一个强大的工具&#xff0c;可以帮助我们优化数据预…

Neural network-based clustering using pairwise constraints (ICLR-workshop 2016)

Neural network-based clustering using pairwise constraints (ICLR-workshop 2016) 源代码 摘要 这篇论文提出了一个基于神经网络的端到端的聚类框架。我们设计了一种新策略&#xff0c;除了学习适用于聚类的特征嵌入&#xff0c;还直接在源数据利用对比方法来推动数据形成…

计算机科学与技术报考指南【河南农业大学】

文章目录 前言环境介绍龙子湖校区文化路校区许昌校区 学院专业介绍计算机学习方面思维上态度上 最后 前言 这几年计算机分数虚高已经成为了不争的事实&#xff0c;加上计算机技术发展日新月异、大多数高校学习课程落后&#xff0c;转换思维另辟蹊径的报考农林类高校的计算机专…

WebSocket:基于 Spring Cloud 配置注解实现 WebSocket 集群方案

上一篇&#xff1a;WebSocket 的具体介绍与内部执行原理 文章目录 介绍用法抽象思路转发思路连接流程获取服务实例信息连接区分和管理 消息发送连接选择给指定用户发送消息给指定路径发送消息 结束源码地址声明 介绍 WebSocket大家应该是再熟悉不过了&#xff0c;如果是单体应…

Debezium系列之:发布Debezium 2.3.0.Final

Debezium系列之&#xff1a;发布Debezium 2.3.0.Final 一、重大变化1.PostgreSQL / MySQL 安全连接更改2.JDBC 存储编码更改 二、新功能和改进1.Debezium Server支持K8s2.新的通知子系统3.新的可扩展信号子系统4.JMX 信号和通知集成5.新的 JDBC 存储子系统6.PostgreSQL 流式传输…

优化伊通河漂流旅行方案的模型——JLU数学学院2020级数学模型期末大作业

文章目录 题目描述背景介绍模型假设问题一的模型决策树模型游客安全最大化与旅行次数最大化模型统筹考虑游客安全与旅行次数的模型模型对比 第二问的模型每天下水的脚踏游船与电动游船的比率的敏感性分析全是电动游船的情形全是脚踏游船的情形每天下水的脚踏游船与电动游船成比…

【深度学习笔记】神经网络概述

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。刚兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a;https://mo…

前端Vue自定义等宽标签栏标题栏选项卡

前端Vue自定义等宽标签栏标题栏选项卡&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13170 效果图如下&#xff1a; # cc-chooseTab #### 使用方法 使用方法 <!-- tabArr:标签数组 current&#xff1a;当前选择序…

Linux 实用操作技巧一

文章目录 Linux 实用操作技巧前言查找当前目录下所有 .gz 结尾的文件查找当前目录超过30天没有修改过且文件大于10M的.gz文件。将software 目录下大于 100k 的文件移动至 /tmp下 时间戳快速转换动态查看日志&#xff0c;并且停止获取内存、CPU、磁盘、IO等信息获取 公网 ip总结…