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…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
