学懂C语言(二十七):C语言 输入和输出(I/O)

在 C 语言中,输入和输出(I/O)是非常基本的操作,通常用于与用户交互、读取文件或向文件写入数据等。C 语言标准库提供了几个函数来进行 I/O 操作,其中最常用的是 printfscanf 函数。

标准输入输出

1. 标准输出:printf

printf 函数用于格式化输出字符串。它的原型通常如下:

int printf(const char *format, ...);
  • format 参数是一个字符串,用来指定输出格式。
  • 后续参数是可变参数列表,对应 format 字符串中的占位符。
示例:
#include <stdio.h>int main() {int age = 25;printf("Hello, my age is %d\n", age);  // 输出:Hello, my age is 25return 0;
}
2. 标准输入:scanf

scanf 函数用于从标准输入(通常是键盘)读取格式化的数据。它的原型通常如下:

int scanf(const char *format, ...);
  • format 参数是一个字符串,用来指定输入格式。
  • 后续参数是可变参数列表,对应 format 字符串中的占位符,用来接收输入的数据。

示例:

#include <stdio.h>int main() {int age;printf("Please enter your age: ");scanf("%d", &age);  // 读取用户输入的整数printf("Your age is: %d\n", age);return 0;
}

 

注意事项

  1. 类型匹配

    • 确保 printf 和 scanf 中的格式说明符与变量类型相匹配。
    • 例如,使用 %d 来读写整数,使用 %f 来读写浮点数,使用 %s 来读写字符串。
  2. 地址符号

    • 当使用 scanf 时,必须使用地址符号 & 来传递变量的地址,因为 scanf 需要直接修改变量的值。
    • 对于 printf,不需要地址符号,因为它只是输出变量的值。
  3. 空格和换行

    • scanf 会忽略开头的空白字符(包括空格和换行),直到遇到第一个非空白字符。
    • 使用 scanf 读取字符串时,%s 默认只读取第一个单词(直到遇到空格)。如果要读取整个行,可以使用 fgets 函数。
  4. 格式化字符串攻击

    • 使用 printf 和 scanf 时要注意格式化字符串攻击的风险。避免使用未验证的用户输入作为格式化字符串的一部分。
    • 例如,不要使用 %s 读取未知长度的字符串,因为这可能导致缓冲区溢出。

更多 I/O 函数

除了 printfscanf 之外,C 语言还提供了其他一些常用的 I/O 函数,如 fprintffscanf 用于文件 I/O,fgets 用于读取一行文本,fputs 用于输出一行文本等。

示例:使用 fgets 和 fputs
#include <stdio.h>int main() {char line[100];printf("Enter some text: ");fgets(line, sizeof(line), stdin);  // 读取一行文本fputs(line, stdout);  // 输出读取的文本return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dpdk发送udp报文

dpdk接收到udp报文后&#xff0c;自己构造一个udp报文&#xff0c;将收到的报文中的源mac&#xff0c;目的mac&#xff0c;源ip&#xff0c;目的ip&#xff0c;源端口和目的端口交换下顺序填充到新的udp报文中&#xff0c;报文中的负载数据和收到的udp保持一致。 注&#xff1…

Yarn UI 时间问题,相差8小时

位置 $HADOOP_HOME/share/hadoop/yarn/hadoop-yarn-common-2.6.1.jar 查看 jar tf hadoop-yarn-common-2.6.1.jar |grep yarn.dt.plugins.js webapps/static/yarn.dt.plugins.js 解压 jar -xvf hadoop-yarn-common-2.6.1.jar webapps/static/yarn.dt.plugins.js inflated: we…

【文件解析漏洞】实战详解!

漏洞描述&#xff1a; 文件解析漏洞是由于中间件错误的将任意格式的文件解析成网页可执行文件&#xff0c;配合文件上传漏洞进行GetShell的漏洞! IIS解析漏洞&#xff1a; IIS6.X&#xff1a; 方式一:目录解析 在网站下建立文件夹的名字为.asp/.asa 的文件夹&#xff0c;其目…

传输层(port)UDP/TCP——解决怎么发,发多少,出错了怎么办

**传输层&#xff1a;**负责数据能够从发送端传输接收端. 传输层所封装的报头里一定有&#xff1a;源端口号和目的端口号的。 **端口号&#xff1a;**可以标识一台主机中的唯一一个进程&#xff08;运用程序&#xff09;&#xff0c;这样当数据传输到传输层的时候就可以通过端…

单向链表(常规和带哨兵)

1.定义 在计算机科学中&#xff0c;链表是数据元素的线性集合&#xff0c;每个元素都指向下一个元素&#xff0c;元素存储上并不连续 2.分类 链表中还有一种特殊的节点称为哨兵结点&#xff0c;也叫哑元结点、首元结点&#xff0c;它不存储数据&#xff0c;通常用作头尾&…

艾体宝干货 | 如何分析关键网络性能指标?持续接收样品试用申请!

网络性能是企业顺利运营的重要基础&#xff0c;而Allegro流量分析仪作为一款强大的网络性能分析工具&#xff0c;为企业提供了深入了解网络运行状况的途径。在本文中&#xff0c;我们将探讨如何利用Allegro 流量分析仪分析关键网络性能指标&#xff0c;以优化网络性能、提高安全…

视频监控国标GB28181平台EasyGBS如何更换默认的SQLite数据库?

视频流媒体安防监控国标GB28181平台EasyGBS视频能力丰富&#xff0c;部署灵活&#xff0c;既能作为业务平台使用&#xff0c;也能作为安防监控视频能力层被业务管理平台调用。国标GB28181视频EasyGBS平台可提供流媒体接入、处理、转发等服务&#xff0c;支持内网、公网的安防视…

Apache2之Ubuntu-XXE漏洞渗透

一、配置靶场 第一步&#xff1a;打开kali&#xff0c;作为攻击机&#xff0c;打开是黑屏不要蒙圈&#xff0c;是正常的 第二步&#xff1a;配置局域网主机 探测局域网内的所有主机-- 1、查看虚拟机的网络配置 2、查看到我的子网地址为192.168.189.0 第三步&#xff1a;使用…

文心智能体零代码开发实践,创建一个智能体:从理论到实践AI技术落地

文心智能体引领零代码智能体开发新风尚&#xff0c;诚邀您一同探索这前沿科技的魅力&#xff01;以下为实践创建一个叫”从理论到实践AI技术落地“智能体的步骤。 首先登录官网&#xff1a;文心智能体平台AgentBuilder | 想象即现实 登录后点击&#xff1a;创建智能体 输入“…

C语言例题(图形打印,逆序输出,交换数组,平均值)

一.X形图形 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和正斜线的长度。针对每行输入&#xff0c;输出用“*”组成的X形图案。 代码展示 #include <stdio.h> int main() {int i0;int j…

Vue3 + js-echarts 实现前端大屏可视化

1、前言 此文章作为本人大屏可视化项目的入门学习笔记&#xff0c;以此作为记录&#xff0c;记录一下我的大屏适配解决方案&#xff0c;本项目是基于vite Vue3 js less 实现的&#xff0c;首先看ui&#xff0c;ui是网上随便找的&#xff0c;代码是自己实现的&#xff0c;后面…

LCM接口通讯说明

LCM&#xff08;Liquid Crystal Module&#xff0c;液晶模块&#xff09;接口通讯说明涉及多种接口类型和通讯方式&#xff0c;这些接口和通讯方式的选择取决于具体的应用场景和需求。 最常见的LCD模块接口协议是&#xff1a; 1.并行接口 2.串行接口 3.串行或并行配置到微处…

基于欧氏距离的点云聚类(python)

1、背景介绍 欧式聚类是一种基于欧氏距离度量的聚类算法。它是点云处理中的一个重要步骤&#xff0c;它可以帮助我们从无序的点云数据中提取有意义的信息。一般来说&#xff0c;对点云进行欧式聚类处理&#xff0c;可以帮助后续数据处理&#xff0c;如物体检测与识别、三维重建…

<Rust><iced>基于rust使用iced构建GUI实例:一个CRC16校验码生成工具

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本文是专栏第五篇实例,是一个CRC16校验码转换程序。 本篇内容: 1、CRC16校验码生成 代码介绍 本文的crc16校验码生成工具,主要设计两个方面,一个是crc16 modbus…

【动态规划】力扣.213. 打家劫舍 II

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

基于YOLOv8的高压输电线路异物检测系统

基于YOLOv8的高压输电线路异物检测系统 (价格88) 包含 【“鸟窝”&#xff0c;“风筝”&#xff0c;“气球”&#xff0c;“垃圾”】 4个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数…

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一&#xff1a;目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…

黑马头条Day11- 实时计算热点文章、KafkaStream

一、今日内容 1. 定时计算与实时计算 2. 今日内容 KafkaStream 什么是流式计算KafkaStream概述KafkaStream入门案例SpringBoot集成KafkaStream 实时计算 用户行为发送消息KafkaStream聚合处理消息更新文章行为数量替换热点文章数据 二、实时流式计算 1. 概念 一般流式计…

【Win10】记一次蓝屏修复

最近电脑蓝屏了好多次&#xff0c;错误代码为&#xff1a;IRQL_NOT_LESS_OR_EQUAL 直接搜这个错误代码不太好找原因&#xff0c;于是按照这篇文章[1]来打开错误日志文件。 需要先在windows的应用商店中下载WinDbg 然后&#xff0c;打开目录 C:\Windows\Minidump &#xff0c;…

“论云原生架构及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 近年来&#xff0c;随着数字化转型不断深入&#xff0c;科技创新与业务发展不断融合&#xff0c;各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下&#xff0c;以容器和微服务架构为代表的云原生技术作为云计算服务的新…