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…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...
