当前位置: 首页 > news >正文

C语言——输入输出

C语言——输入输出

  • 输入输出函数的类型
  • getchar
  • putchar
  • printf
    • 占位符的分类
  • scanf

什么是输入输出呢?
所谓输入输出是以计算机为主机而言的,往内存中输入数据为输入,反之从内存中输出数据为输出。
输入输出的功能
C语言本身是不提供输入输出功能的,我们使用的是C语言库函数提供的标准输入输出函数,C语言函数库供的标准输入输出函数

输入输出函数的类型

输入输出的分类有很多下面主要讲述以下三种;
1、getchar/putchar:用于操作单个字符;
2、gets/puts:用于操作字符串;
3、scanf/printf:格式化的输入和输出;
需要注意的是在使用这些函数的时候需要包含头文件#include <stdio.h>;

getchar

功能是从键盘上获取一个字符;
函数原型为:int getcahr(void);
由函数原型可以知道getchar函数的形式参数为空,也就是在使用这个参数是不用传参,返回值为int类型意思是返回获取到的字符的ASCII码值,简单用法如下:

#include <stdio.h>int main()
{int ret = 0;ret = getchar();printf("%c %d", ret, ret);return 0;
}

程序输出从键盘上获取到的字符的字符原型和它对应的ASCII码值;

putchar

功能是输出一个字符;
函数原型:int putchar(int c)
其参数表示要输出的字符,返回值会有两种情况:1、如果成功输出就返回成功输出的字符的ASCII码值;2、如果失败了就返回-1;
用法其实很简单把你想要输出的字符当作参数传给putchar(),它就会在屏幕上输出你传入的字符,不过一次性只能输出一个字符,即使你传进多个字符它也只会识别第一个字符并输出,如果想输出多个字符就只能多次调用;

printf

printf()函数是格式化输出函数,它的函数原型为:
int printf(const *format, …)
其中形参的…代表的意思是可变参数;
printf的一般形式为:
printf(“格式控制字符串”, 输出参数列表);
格式控制字符串包括:
1、普通字符,对于普通字符会原样输出;
2、占位符比如说%d,占位符用于匹配后面的输出参数;

占位符的分类

整形
%d:输出参数转换为有符号的十进制形式;
%u:输出参数转换为无符号的十进制形式;
%o:输出参数转换为八进制的形式;
%x:输出参数转换为十六进制的形式;
%X:输出参数转换为十六进制的形式但是十六进制的a,b,c,d,e,f输出时都变成大写,包括0x中的x也要大写;
浮点型
%f:输出参数转换为十进制形式的小数形式,输出时默认保留六位小数不够就补零;
%e:输出参数转换为科学计数的形式输出;(%E输出是e变成大写)
%g:这是以一种更简洁的方式输出,同时会去掉无意义的0;%g输出时并不一定会按照我们所期望的形式输出,所以在使用时需要进行测试;
字符型
%c:输出参数转换为字符形式输出;
%s:输出参数转换为字符串形式输出;

占位符还可以配合辅助控制符来使用,那么辅助控制字符有哪些呢?
#——可以用于打印进制的前缀,例如%#x可以用于打印十六进制的前缀,%#o可以用于打印十六进制的前缀,等等;
m(m为数字)——表示要输出的字符所占的宽度,如果数据本身的宽度 > m 此时按照实际宽度输出 ;如果数据本身的宽度 < m 此时按照m宽度输出,空出来的位置会填空格;
输出的字符默认会按照右对齐,如果想要输出的字符按照左对齐可以使用
-m:表示按照指定宽度输出且输出的字符按照左对齐;
0m:表示多出来的位置用0来填充而不是空格;
.n(其中n表示数字),常见用法:
%f中:%.nf表示输出结果保留n为小数;
%e中:%.ne表示科学计数法的小数部分保留n为小数;
%s中:%.ns表示保留字符串中的前n个字符;
l:用于long类型数据的输出;
ll:用于long long类型数据的输出;
h:输出的数据所占的字节数为原来的二分之一;
hh:输出的数据所占的字节数为原来的四分之一;
注意:占位符的输出对应关系都是一一对应的。

scanf

一般格式:scanf(“格式控制字符串”,地址表列);
例如:

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

scanf中的格式控制字符串也包含普通字符和占位符,普通字符需要用户原样输入而占位符和peintf()函数相似,如果scanf()中包含普通字符因为输入时每次都要输出普通字符很麻烦所以在scanf的格式控制字符串中尽量不出现普通字符,一般只写占位符;
scanf()使用的过程中需要注意的问题:
1、scanf的地址列表中一定要为有效的地址否则编译时就会发生段错误(原因是访问到了不能访问的空间);
为什么要设置地址列表呢?
我的理解是,scanf在读数据的时候会根据占位符识别输入的数据然后进行匹配如果数据合法就把数据读进对应的地址参数所指向的内存空间,直到满足匹配结束条件满足位置,这样在后面调用的时候直接使用就可以,因为相应变量的空间中已经存放这scanf读取的数据;
需要注意的是读取的时候的匹配结束条件,遇到非法字符(占位符对应的数据类型不包含的字符)匹配结束;遇到空白字符(空格、回车、tab)匹配结束;超过指定的宽度匹配结束;匹配的结束是这样的scanf逐个识别输入的数据,符合占位符对应的类型的数据就放进对应变量地址的空间,如果遇到非法字符、空白字符或者超过指定的宽度就进入下一个占位符的匹配;
典型错误:

char a, b;
scanf("%c%c", &a, &b);
printf("%d %d", a, b);

上述程序在键盘输入ab,scanf就会给第一个占位符匹配数据由于%c和%c之间没有结束符且ab均满足第一个%c的匹配要求所以ab会都被读进a中ab的后面是\n第一个匹配结束,第二个%c开始匹配识别到为\n匹配结束,但在输出是由于a为cahr类型的数据所以只输出a对应的ASCII码值,b仍在内存中放着,而b会输出随机数。

辅助控制字符
%d
m表示数据宽度即输入数据的宽度
%lf //输入的时候 ,这里要做到精确匹配
%f:用于float类型数据的输入;
%lf:用于double 类型数据的输入;
%Lf:用于long double类型数据的输入;
%ld:用于long double类型数据的输入;
%lld:用于long long类型数据的输入;

相关文章:

C语言——输入输出

C语言——输入输出 输入输出函数的类型getcharputcharprintf占位符的分类 scanf 什么是输入输出呢&#xff1f; 所谓输入输出是以计算机为主机而言的&#xff0c;往内存中输入数据为输入&#xff0c;反之从内存中输出数据为输出。 输入输出的功能 C语言本身是不提供输入输出功能…...

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

OpenCV图像滤波(2)均值平滑处理函数blur()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在OpenCV中&#xff0c;blur()函数用于对图像应用简单的均值模糊&#xff08;mean blur&#xff09;。这种模糊效果可以通过将图像中的每个像素替…...

Android lmkd机制详解

目录 一、lmkd介绍 二、lmkd实现原理 2.1 工作原理图 2.2 初始化 2.3 oom_adj获取 2.4 监听psi事件及处理 2.5 进程选取与查杀 2.5.1 进程选取 2.5.2 进程查杀 三、关键系统属性 四、核心数据结构 五、代码时序 一、lmkd介绍 Android lmkd采用epoll方式监听linux内…...

linux shell(中)

结构化命令 if语句 if-then 最基本的结构化命令是 if-then 语句。if-then 语句的格式如下&#xff1a; if command thencommands ifif command; then # 通过把分号&#xff08;;&#xff09;放在待求值的命令尾部&#xff0c;可以将 then 语句写在同一行commands ifbash sh…...

VMware三种网络模式---巨细

文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置&#xff1a; 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式&#xff1a; 桥接模式&#xff1a;默认与宿主机VMnet0绑…...

力扣高频SQL 50 题(基础版)第一题

文章目录 力扣高频SQL 50 题&#xff08;基础版&#xff09;第一题1757.可回收且低脂的产品题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图&#xff1a; 力扣高频SQL 50 题&#xff08;基础版&#xff09;第一题 1757.可回收且低脂的产品 题目说…...

2.1.卷积层

卷积 ​ 用MLP处理图片的问题&#xff1a;假设一张图片有12M像素&#xff0c;那么RGB图片就有36M元素&#xff0c;使用大小为100的单隐藏层&#xff0c;模型有3.6B元素&#xff0c;这个数量非常大。 识别模式的两个原则&#xff1a; 平移不变性&#xff08;translation inva…...

网易《永劫无间》手游上线,掀起游戏界狂潮

原标题&#xff1a;网易《永劫无间》手游上线&#xff0c;网友&#xff1a;发烧严重 易采游戏网7月26日消息&#xff1a;自网易宣布《永劫无间》手游即将上线以来&#xff0c;广大游戏玩家的期待值就不断攀升。作为一款拥有丰富内容和极高自由度的游戏&#xff0c;《永劫无间》…...

RNN(一)——循环神经网络的实现

文章目录 一、循环神经网络RNN1.RNN是什么2.RNN的语言模型3.RNN的结构形式 二、完整代码三、代码解读1.参数return_sequences2.调参过程 一、循环神经网络RNN 1.RNN是什么 循环神经网络RNN主要体现在上下文对理解的重要性&#xff0c;他比传统的神经网络&#xff08;传统的神…...

php 根据位置的经纬度计算距离

在开发中,我们要经常和位置打交道,要计算附近的位置、距离什么的。如下: 一.sql语句 SELECT houseID,title,location,chamber,room,toward,area,rent,is_verify,look_type,look_time, traffic,block_name,images,tag,create_time,update_time, location->&g…...

17 Python常用内置函数——基本输入输出

input() 和 print() 是 Python 的基本输入输出函数&#xff0c;前者用来接收用户的键盘输入&#xff0c;后者用来把数据以指定的格式输出到标准控制台或指定的文件对象。无论用户输入什么内容&#xff0c;input() 一律作为字符串对待&#xff0c;必要时可以使用内置函数 int()、…...

【Web】LitCTF 2024 题解(全)

目录 浏览器也能套娃&#xff1f; 一个....池子&#xff1f; 高亮主题(划掉)背景查看器 百万美元的诱惑 SAS - Serializing Authentication exx 浏览器也能套娃&#xff1f; 随便试一试&#xff0c;一眼ssrf file:///flag直接读本地文件 一个....池子&#xff1f; {…...

家政项目小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;家政人员管理&#xff0c;家政服务管理&#xff0c;咨询信息管理&#xff0c;咨询服务管理&#xff0c;家政预约管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能…...

electron TodoList网页应用打包成linux deb、AppImage应用

这里用的是windows的wsl的ubuntu环境 electron应用打包linux应用需要linux下打包&#xff0c;这里用windows的wsl的ubuntu环境进行操作 1&#xff09;linux ubuntu安装nodejs、electron 安装nodejs&#xff1a; sudo apt update sudo apt upgrade ##快捷安装 curl -fsSL http…...

【C语言】 使用fgets和fputs完成两个文件的拷贝

目录 1、使用fgets和fputs完成两个文件的拷贝 2、使用fgets统计给定文件的行号 fgets和fputs的使用方法函数原型&#xff1a;int fputs&#xff08;const char *s,FILE *stream)&#xff1b; char *fgets(char *s,int size,FILE *stream)&#xff1b;fupts…...

使用PyTorch导出JIT模型:C++ API与libtorch实战

PyTorch导出JIT模型并用C API libtorch调用 本文将介绍如何将一个 PyTorch 模型导出为 JIT 模型并用 PyTorch 的 CAPI libtorch运行这个模型。 Step1&#xff1a;导出模型 首先我们进行第一步&#xff0c;用 Python API 来导出模型&#xff0c;由于本文的重点是在后面的部署…...

Python——异常捕获,传递及其抛出操作

01. 异常的概念 1. 程序在运行时&#xff0c;如果 python解释器遇到一个错误&#xff0c;会停止程序的执行&#xff0c;并且提示一些错误信息&#xff0c;这就是异常。 2. 程序停止执行并且提示错误信息这个动作&#xff0c;我们通常称之为&#xff1a;抛出&#xff08;raise…...

【Maven】 的继承机制

Maven是一个强大的项目管理工具&#xff0c;主要用于Java项目的构建和管理。它以其项目对象模型&#xff08;POM&#xff09;为基础&#xff0c;允许开发者定义项目的依赖、构建过程和插件。Maven的继承机制是其核心特性之一&#xff0c;它允许子项目继承和复用父项目的配置&am…...

微信小程序结合后端php发送模版消息

前端&#xff1a; <view class"container"><button bindtap"requestSubscribeMessage">订阅消息</button> </view> // index.js Page({data: {tmplIds: [UTgCUfsjHVESf5FjOzls0I9i_FVS1N620G2VQCg1LZ0] // 使用你的模板ID},requ…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

算法250609 高精度

加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

从0开始学习R语言--Day17--Cox回归

Cox回归 在用医疗数据作分析时&#xff0c;最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据&#xff0c;往往会有很多的协变量&#xff0c;即使我们通过计算来减少指标对结果的影响&#xff0c;我们的数据中依然会有很多的协变量&#xff0c;且…...

WEB3全栈开发——面试专业技能点P8DevOps / 区块链部署

一、Hardhat / Foundry 进行合约部署 概念介绍 Hardhat 和 Foundry 都是以太坊智能合约开发的工具套件&#xff0c;支持合约的编译、测试和部署。 它们允许开发者在本地或测试网络快速开发智能合约&#xff0c;并部署到链上&#xff08;测试网或主网&#xff09;。 部署过程…...

Flask和Django,你怎么选?

Flask 和 Django 是 Python 两大最流行的 Web 框架&#xff0c;但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比&#xff1a; 核心区别&#xff1a;哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...