格式化输入输出

news2024/9/22 4:31:55

跟着肯哥(不是我)学格式化输入输出

C语言格式化输入

在C语言中,格式化输入(Formatted Input)是一种从标准输入读取数据并按照指定格式进行解析的操作,它主要通过使用标准库函数scanf()来实现格式化输入。

格式化输入规则

这没什么好说的,搬运自讲义

scanf()函数使用格式控制字符串来指定输入的格式,包括要读取的数据类型和数据的排列方式。以下是一些常用的格式控制符:

  • %d:读取有符号整数
  • %ld:读取有符号长整数
  • %u:读取无符号整数
  • %lu:读取无符号长整数
  • %f:读取单精度浮点数
  • %lf:读取双精度浮点数。
  • %c:读取字符
  • %s:读取字符串
  • %x:读取十六进制(小写字母)整数
  • %X:读取十六进制(大写字母)整数
  • %o:以八进制形式读取无符号整数
  • %e:以指数形式读取单、双精度实数
  • %p:读取一个指针的地址,与%x和%lx类似
  • %%:读取百分号字符

格式化输入操作对输入数据格式要求严格,如果输入的数据与格式求不匹配,或者输入中包含了无效字符,可能会导致解析错误。
这就要求我们在使用格式化输入时,需要保证输入数据符合指定的格式,或者进行错误处理以防止程序崩溃或产生未定义的行为。
scanf()函数会跳过输入中的空白字符(如空格、制表符、换行符等),直到找到匹配的空白字符为止。这意味着在使用scanf()函数读取输入之前,可能需要清除输入缓冲区中的残留字符,以确保输入的准确性。通常我们会使用getchar()fflush(stdin)函数来清除缓冲区。
scanf输入数据的存放时,一定是存放在一个对应数据类型的内存空间,所以体现在scanf的函数传参就是带&符合的地址。如果传入的是变量,而不是它的地址,可能会产生不可预知的错误。

C语言格式化输出

还是老生常谈的东西,也没什么好说的,搬运自讲义

C语言中,格式化输出(Formatted Output)是一种按照指定格式将数据打印到标准输出或者其他输出设备的操作,它主要通过使用标准库函数printf()来实现格式化输出。

  • %d:输出有符号整数
  • %ld:输出有符号长整数
  • %u:输出无符号整数
  • %lu:输出无符号长整数
  • %f:以小数形式输出单精度、双精度浮点数
  • %c:输出单个字符
  • %s:输出一个字符串
  • %x:输出十六进制(小写字母)整数
  • %X:输出十六进制(大写字母)整数
  • %o:以八进制形式输出无符号整数(不输出前缀0)
  • %e:以指数形式输出单、双精度实数
  • %p:输出一个指针的地址,与%x和%lx类似
  • %%:输出百分号字符

此外,这些格式化控制符可以与其他修饰符一起,以便实现更多的输出控制。
以下是一些常用的修饰符:

  • %-:左对齐输出
  • %+:显示正数的正号
  • %0:用零填充字段宽度
  • %*:从参数中获取字段宽度或精度
  • %n:将已打印字符的数量存储到中 (比较少见)

格式化输出是将数据以人类可读的方式呈现给用户,方便查看和理解。
合理运用格式化输出可以使输出结果更具可读性,并且方便调试和展示程序的运行结果。

C语言变参函数

这个我用的少,但很想接触。很少有资料讲过

在C语言中,变参函数(Variadic Function)是一种能够接受可变数量的参数的函数。它允许我们定义一个函数,在调用时可以传入不定数量的参数。
在C语言中,使用标准库函数stdarg.h中的一组宏来支持变参函数的实现。主要的宏有以下三个:

  • va_list:变量类型,用于存储可变参数列表。
  • va_start:宏,用于初始化可变参数列表。
  • va_arg:宏,用于访问可变参数列表中的参数。
  • va_end:宏,用于结束变参的处理。

讲义的示例代码

#include <stdio.h>
#include <stdarg.h>

double average(int count, ...) {
   double sum = 0;
   int i;

   va_list arglist;
   va_start(arglist, count);

   for (i = 0; i < count; i++) {
       double num = va_arg(arglist, double);
       sum += num;
   }

   va_end(arglist);

   return sum / count;
}

int main() {
   double avg1 = average(3, 1.0, 2.0, 3.0);
   double avg2 = average(5, 1.5,2.5, 3.5, 4.5, 5.5);

   printf("平均值1 %lf\n", avg1);
   printf("平均值2: %lf\n", avg2);

   return 0;
}

image.png

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

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

相关文章

Go语言的学习笔记2——Go语言源文件的结构布局

用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局&#xff0c;主要分为包名、引入的包和具体函数。下边是main.go示例代码&#xff1a; package mainimport "fmt"func main() { fmt.Println("hello, world") }package main就是表明这个文件…

计算机毕业设计 基于SpringBoot的无人智慧超市管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解+答疑

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

14.docker部署应用的两种企业实践

1.介绍 1.1 说明 这里仅仅说明一下在企业应用的两种简单实践&#xff0c;并不包含自动化这套东西。这里说的两种实践&#xff0c;是我在工作中不同公司使用的两种部署方式&#xff0c;仅供大家参考。 1.2 两种部署方式 第一种&#xff1a;是把环境和app都一起打成一个镜像&…

Javaweb之前端工程化的详细解析

3 前端工程化 3.1 前端工程化介绍 我们目前的前端开发中&#xff0c;当我们需要使用一些资源时&#xff0c;例如&#xff1a;vue.js&#xff0c;和axios.js文件&#xff0c;都是直接再工程中导入的&#xff0c;如下图所示&#xff1a; 但是上述开发模式存在如下问题&#xff…

力扣每日一道系列 --- LeetCode 206. 反转链表

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 LeetCode 206. 反转链表 思路一&#xff1a;头插 初始化两个指针&#xff0c;cur 和 newhead。…

数据结构与算法介绍

什么是数据结构 定义&#xff1a; 数据结构就是研究数据的存储方式&#xff1b;数据存储的目的是方便后期对数据的再利用&#xff1b;选择合适的方式来存储数据&#xff0c;是数据结构的核心内容。 数据存储结构的选择&#xff1a;取决于两方面&#xff0c;即数据的逻辑结构和…

metersphere 设置定时任务和查看报告

设置定时任务 设置时间 查看执行后的测试报告 查看报告详情

【报错栏】(Vue) Invalid handler for event “click“: got undefined

Property or method "add" is not defined on the instance but referenced during render. 翻译&#xff1a; 属性或方法“add”未在实例上定义&#xff0c;但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译&#xff1a; …

使用VUE3实现简单颜色盘,吸管组件,useEyeDropper和<input type=“color“ />的使用

1.使用vueuse中的useEyeDropper来实现滴管的功能和使用input中的type"color"属性来实现颜色盘 效果&#xff1a; 图标触发吸管 input触发颜色盘 组件代码部分 &#xff1a;<dropper> ---- vueuse使用 <template><div class"sRGBHexWrap fbc…

DGL在异构图上的GraphConv模块

回顾同构图GraphConv模块 首先回顾一下同构图中实现GraphConv的主要思路&#xff08;以GraphSAGE为例&#xff09;&#xff1a; 在初始化模块首先是获取源节点和目标节点的输入维度&#xff0c;同时获取输出的特征维度。根据SAGE论文提出的三种聚合操作&#xff0c;需要获取所…

2023亚太杯数学建模B题完整原创论文讲解

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2023亚太地区数学建模竞赛B题玻璃温室的微气候调控完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 论文共6…

ZC-OFDM模糊函数原理及仿真

文章目录 前言一、ZC 序列二、ZC-OFDM 信号1、OFDM 信号表达式2、模糊函数表达式三、MATLAB 仿真1、MATLAB 核心源码2、仿真结果①、ZC-OFDM 模糊函数②、ZC-OFDM 距离分辨率③、ZC-OFDM 速度分辨率前言 本文进行 ZC-OFDM 的原理讲解及仿真,首先看一下 ZC-OFDM 的模糊函数仿真…

roseha for windows 11+oracle 11g部署过程

文章目录 一、环境准备关闭防火墙配置hosts共享存储准备 二、部署步骤1.主机A、B安装数据库软件2.主机A进行数据库实例创建3.主机B创建数据库4.安装配置roseha软件 一、环境准备 windows server 2019 oracle 11.2.0.3 EE roseha for windows 11 5个IP地址&#xff1a;2心跳、3…

元宇宙vr线上展馆在线制作降低开发门槛和成本

让人人都拥有自己的元宇宙空间&#xff0c;说起来就是一个令人亢奋的消息&#xff0c;也是大家所期待的&#xff0c;VR元宇宙空间在线编辑平台是VRARAI元宇宙公司深圳华锐视点自主研发的平台&#xff0c;允许用户在虚拟环境中创建、设计和共享空间&#xff0c;操作简单&#xf…

Ubuntu20.04上编译安装TVM

本文主要讲述如何在ubuntu20.04平台上编译TVM代码并在python中import tvm成功。 源代码下载&#xff1a; git clone --recursive https://github.com/apache/tvm tvm 平台环境升级&#xff1a; 1&#xff09; sudo apt-get update 2&#xff09; sudo apt-get install -y pyth…

RK3588平台 USB框架与USB识别流程

一.USB的基本概念 在最初的标准里&#xff0c;USB接头有4条线&#xff1a;电源&#xff0c;D-,D,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了&#xff0c;又增加了miniUSB接头。而miniUSB接头则有5条线&#xff0c;多了一条ID线,用来标识身份用的。 热插拔&am…

【信息隐藏】信息隐藏基础

00 学习资源 0.1 推荐书籍 1.多媒体安全基础导论 复旦大学出版社 蓝皮&#xff1b; 2.隐写学原理与技术&#xff08;赵险峰&#xff09;科学出版社 蓝皮 0.2 视频课程 南开大学-信息隐藏技术&#xff08;没看&#xff09; 0.3 代码资源 GitHub一位phd&#xff1a;https:/…

Spring Cloud 版本升级遇坑记:OpenFeignClient与Gateway的恩怨情仇

Spring Cloud 版本升级遇坑记&#xff1a;OpenFeignClient与Gateway的恩怨情仇 近日&#xff0c;在对项目中的 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行版本升级时&#xff0c;遭遇了一个令人头疼的问题&#xff1a;Spring Cloud Gateway 在运行时一直卡住&a…

ES之x-pack-core-7.14.2许可证修改为白金版

X-Pack是什么 X-pack是elasticsearch的一个扩展包&#xff0c;将安全&#xff0c;警告&#xff0c;监视&#xff0c;图形和报告功能捆绑在一个易于安装的软件包中&#xff0c;虽然x-pack被设计为一个无缝的工作&#xff0c;但是你可以轻松的启用或者关闭一些功能。 主要分一下步…

W11安装mysql8详细保姆篇

一、MySQL的下载 目前官方最新版本是8.0.34&#xff0c;考虑到其稳定性、可靠性还需一定周期保证&#xff0c;所以使用官方版求稳定仍然建议5.7系列。MySQL官方下载链接&#xff1a;MySQL官网下载 二、MySQL的安装 1、右击下载完成的安装包 2、点击Custom >> Next 3、…