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 什么是输入输出呢? 所谓输入输出是以计算机为主机而言的,往内存中输入数据为输入,反之从内存中输出数据为输出。 输入输出的功能 C语言本身是不提供输入输出功能…...

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

OpenCV图像滤波(2)均值平滑处理函数blur()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV中,blur()函数用于对图像应用简单的均值模糊(mean blur)。这种模糊效果可以通过将图像中的每个像素替…...

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 语句的格式如下: if command thencommands ifif command; then # 通过把分号(;)放在待求值的命令尾部,可以将 then 语句写在同一行commands ifbash sh…...

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

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

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

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

RNN(一)——循环神经网络的实现
文章目录 一、循环神经网络RNN1.RNN是什么2.RNN的语言模型3.RNN的结构形式 二、完整代码三、代码解读1.参数return_sequences2.调参过程 一、循环神经网络RNN 1.RNN是什么 循环神经网络RNN主要体现在上下文对理解的重要性,他比传统的神经网络(传统的神…...
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 的基本输入输出函数,前者用来接收用户的键盘输入,后者用来把数据以指定的格式输出到标准控制台或指定的文件对象。无论用户输入什么内容,input() 一律作为字符串对待,必要时可以使用内置函数 int()、…...

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

家政项目小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,家政人员管理,家政服务管理,咨询信息管理,咨询服务管理,家政预约管理,留言板管理,系统管理 微信端账号功能…...

electron TodoList网页应用打包成linux deb、AppImage应用
这里用的是windows的wsl的ubuntu环境 electron应用打包linux应用需要linux下打包,这里用windows的wsl的ubuntu环境进行操作 1)linux ubuntu安装nodejs、electron 安装nodejs: sudo apt update sudo apt upgrade ##快捷安装 curl -fsSL http…...

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

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

Python——异常捕获,传递及其抛出操作
01. 异常的概念 1. 程序在运行时,如果 python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常。 2. 程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise…...
【Maven】 的继承机制
Maven是一个强大的项目管理工具,主要用于Java项目的构建和管理。它以其项目对象模型(POM)为基础,允许开发者定义项目的依赖、构建过程和插件。Maven的继承机制是其核心特性之一,它允许子项目继承和复用父项目的配置&am…...
微信小程序结合后端php发送模版消息
前端: <view class"container"><button bindtap"requestSubscribeMessage">订阅消息</button> </view> // index.js Page({data: {tmplIds: [UTgCUfsjHVESf5FjOzls0I9i_FVS1N620G2VQCg1LZ0] // 使用你的模板ID},requ…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...