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…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
用js实现常见排序算法
以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析 1. 选择排序(Selection Sort) 核心思想:每次从未排序部分选择最小元素,与未排…...
Android多媒体——音/视频数据播放(十八)
在媒体数据完成解码并准备好之后,播放流程便进入了最终的呈现阶段。为了确保音视频内容能够顺利输出,系统需要首先对相应的播放设备进行初始化。只有在设备初始化成功后,才能真正开始音视频的同步渲染与播放。这一过程不仅影响播放的启动速度,也直接关系到播放的稳定性和用…...
Flask和Django,你怎么选?
Flask 和 Django 是 Python 两大最流行的 Web 框架,但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比: 核心区别:哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...
