【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar)
| 标准文件 | 文件指针 | 设备 |
|---|---|---|
| 标准输入 | stdin | 键盘 |
| 标准输出 | stdout | 屏幕 |
| 标准错误 | stderr | 您的屏幕 |
标准输入/输出的函数在标准库stdio.h。
#include <stdio.h>
1、printf 输出
printf :格式化输出,输出到标准输出stdout中。
printf: int printf(const char *format, ...)
参数:format是字符串(包含输出的内容,也可以包含占位符(格式化说明符))。
返回:输出的字符总数。若失败,返回负数。
注意:printf 输出不包括换行符'\n',需手动添加。
format 说明符(占位符):
| 类型 | 合格的输入 | 参数的类型 |
|---|---|---|
| %a、%A | 读入一个浮点值(仅 C99 有效)。 | float |
| %f、%F | 浮点数。以小数形式输出单、双精度实数。例如:-732.103 | float |
| %e、%E | 浮点数。以指数形式输出单、双精度实数。例如:7.12e4 | float |
| %g、%G | 浮点数。以%f或%e中较短的输出宽度输出单、双精度实数 | float |
| %i | 读入十进制,八进制,十六进制整数 。 | int |
| %d | 十进制整数。正数不输出符号 | int |
| %o | 八进制整数。 | int |
| %x、%X | 十六进制整数。 | int |
| %u | 无符号的十进制整数。 | unsigned int |
| %c | 单个字符 | char |
| %s | 字符串。将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。 | char |
| %p | 读入一个指针 。(指针存储内存地址。获取内存地址:&变量名) | |
| %[] | 扫描字符集合 。 | |
| %% | 读 % 符号。 |
#include <stdio.h>int main(void)
{int i = 10;float f = 3.1415926;char c = 'a';char s[6] = "hello";printf("int m: %6d \n", i); // 宽度为6的整数printf("float k: %.2f \n", f); // 2位小数的浮点数printf("char c: %c \n", c); // 单个字符printf("string s: %s \n", s); // 字符串printf("string s = %s, the first char is %c \n", s, s[0]); // 字符串中第一个字符printf("int m memory address is %p \n", &i); // 整数m的内存地址return 0;
}// 结果:
int m: 10
float k: 3.14
char c: a
string s: hello
string s = hello, the first char is h
int m memory address is 000000000061FE14
2、scanf 输入
scanf :从标准输入stdin,读取格式化输入。
scanf: int scanf(const char *format, ...)
参数:format是字符串(包括占位符)。
返回:成功匹配或赋值的个数。若到达文件末尾或发生错误,返回NULL。
注意:scanf 碰到空格就停止读取。
// scanf 不能显示输入的提示信息,用printf 提前输出提示信息。
#include <stdio.h>int main(void)
{char s[16];printf("Input: ");scanf("%s", s); // 读取输入的字符串printf("Output: %s", s);return 0;
}// 结果:
Input: good luck 【输入:good luck】
Output: good
// 若scanf中有提示信息,则输入内容时要手动把提示信息一并输入。
#include <stdio.h>int main(void)
{char s[16];// printf("Input: ");scanf("Input: %s", s); // 读取输入的字符串(提示信息也需输入)printf("Output: %s", s);return 0;
}// 结果:
Input: good luck 【输入:Input: good luck】
Output: good
字符串是指针,指向字符数组。字符串名本身就表示了内存地址(第一个字符的内存地址)。
而整数,则需要通过 "&变量名" 获取内存地址。
#include <stdio.h>int main(void)
{int m, n;printf("Input two number: ");scanf("%d %d", &m, &n); // 读取输入的整数printf("Output two number: %d %d", m, n);return 0;
}// 结果:
Input two number: 1 2 【输入:1 2】
Output two number: 1 2
3、gets, puts 输入/输出整行字符
gets(s):读取输入的一行字符串,从标准输入stdin读取一行 并存储到字符串s指向的内存空间。
gets: char *gets(char *str)
参数:str是指向字符数组的指针,该数组存储读取的字符串。
返回:指针,指向读取到的字符串。若没有读取到内容或发生错误,返回NULL。
注意:读取到换行符 或到达文件末尾 就停止。
可能导致缓冲区溢出,若避免,可使用fgets函数,例如:fgets(str, 20, stdin)从标准输入stdin读取最多20个字符(包括结束符'\0')存储到str指向的内存。
puts(s):输出字符串,将字符串s写入到标准输出stdout中。
puts: int puts(const char *str)
参数:str是要输出的字符串。
返回:字符串长度(包括结束符'\0')。若发生错误,返回NULL。
注意:碰到空字符就停止,且输出中不包括空字符。换行符会被追加到输出中(即输出中包括换行符'\n')。
#include <stdio.h>int main(void)
{ char s[16];printf("Input: ");gets(s); // 读取输入的内容printf("Output: ");puts(s); // 输出读取的内容return 0;
}// 结果:
Input: good luck 【输入:good luck】
Output: good luck
4、getchar, putchar 输入/输出一个字符
getchar():读取输入的一个字符,从标准输入stdin获取一个字符(包括回车)。
getchar: int getchar(void)
参数:无。
返回:读取的字符(无符号char强制转为int形式) 。如果到达文件末尾或发生读错误,则返回 EOF。
注意:正常输入以按回车(换行符'\n') 结束。
putchar(c):输出一个字符,即将指定字符写入到标准输出stdout。
putchar: int putchar(int char)
参数:char是要输出的字符。
返回:输出的字符(无符号char强制转为int形式) 。如果发生错误,则返回 EOF。
#include <stdio.h>int main(void)
{char c;printf("Enter a value: ");c = getchar(); // 读取输入的内容printf("The value is: ");putchar(c); // 输出一个字符return 0;
}// 结果:
Enter a value: abc 【输入abc】
The value is: a
同一时间只能输入/输出一个字符,可用循环输入/输出多个字符。
#include <stdio.h>int main(void)
{ printf("Enter a value: ");char c;// 通过循环输入/输出多个字符while((c = getchar()) != '\n' && c != EOF){putchar(c);} return 0;
}// 结果:
Enter a value: abc 【输入abc】
abc
相关文章:
【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar)
标准文件文件指针设备标准输入stdin键盘标准输出stdout屏幕标准错误stderr您的屏幕 标准输入/输出的函数在标准库stdio.h。 #include <stdio.h> 1、printf 输出 printf :格式化输出,输出到标准输出stdout中。 printf: int print…...
C、C++、C#中.vscode下json文件记录
C launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"name": &quo…...
2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序
2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现: 随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好…...
使用ARCore深度API实现点云采集
一、深度API 本小节内容摘自ARCore官方文档。 ARCore 深度API Depth API 可助力实现对象遮挡、提升沉浸感和新颖的互动体验,从而增强 AR 体验的真实感。 在下图中,右侧画面是采用深度API进行遮挡后的效果,与左侧图相比更加真实。 深度值 给…...
软考数据库
目录 分值分布1. 事务管理1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别: 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 2. SQL语言发权限收权限视图触发器…...
Echarts 自适应宽高,或指定宽高进行自适应
文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长,形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素,然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…...
体验报告:为什么Claude-3是码农和学者的新宠?
在这个充斥着海量信息的新时代,人工智能的飞速发展带来了翻天覆地的变化。特别是在编程、学术探索以及专业文案创作等领域,AI的助力显得格外关键。最近,我有机会尝试了一种革命性的人工智能工具——Claude-3,其表现令我震惊&#…...
接口自动化框架搭建(九):接入钉钉消息通知
1,jenkins安装钉钉插件 2,在钉钉群聊设置机器人 3,jenkins配置钉钉 根据情况选择: 除了这些,其他不用配置,配置完成点击确认 4,项目配置 添加后保存 5,测试下效果 构建完成后&a…...
一、点击视频下载(通过视频url实现);二、点击下载视频按钮,视频以压缩包形式下载(但未实现压缩视频)
一、点击视频下载(通过视频url实现) <div class"video-list" v-for"(item,index) in videoList" :key"index"><span class"video-title" >{{item.title}}</span><span class"video-…...
B树、B+树、哈夫曼树
目录 1. B树2. B树3. 哈夫曼树 1. B树 特点:一个节点当中可以有多个值,节点内部key 值是有序的,节点内部存储的是key-value类型的数据 磁盘中文件存储用B树。 4阶B树一个节点最多三个key值 5阶B树一个节点最多四个key值 B树有很多的分支&…...
评价指标_Precision(精确率)、Recall(召回率)和Accuracy(准确率)区别和联系
Precision(精确率)、Recall(召回率)和Accuracy(准确率)是机器学习和信息检索领域常用的评价指标,它们用于评估分类器或检索系统的性能,但各自关注的方面略有不同。 Precision&#x…...
【React】React AJAX
在React中使用AJAX(Asynchronous JavaScript and XML)是一种常见的做法,用于从服务器获取数据并在组件中显示。尽管AJAX的名字中包含了XML,但现在更多地使用JSON(JavaScript Object Notation)作为数据交换格…...
vue 移动端弹窗带滚动效果 滚动到底的时候弹窗下的页面会跟着滑动
<template><div class"wrap" :style"dynamicStyle"><!--dynamicStyle主要是介个 通过computed设置postion的值 弹窗的时候设置为fixed 关闭弹窗的时候设置为unset--><div class"banner-wrap"><img src"/assets/…...
Linux-3 yum和vim
目录 本节目标: Linux 软件包管理器 yum 什么是软件包 1.yum是什么?软件包? 2.Linux(centos)的生态 3.yum的相关操作 我怎么知道我应该安装什么软件? 4.yum的本地配置 关于 rzsz 查看软件包 Linux编辑器-vim使用 1.v…...
什么是计算机视觉?计算机视觉:从基础到前沿
引言 计算机视觉,作为人工智能的一个重要分支,致力于赋予机器“看”的能力——即从图像或视频中理解和解释视觉信息的能力。这项技术的发展为自动驾驶汽车、面部识别、机器人导航等多种应用开辟了道路,正在逐步改变我们的工作和生活方式。本…...
Java中的可变字符串
Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…...
C++多线程:单例模式与共享数据安全(七)
1、单例设计模式 单例设计模式,使用的频率比较高,整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式,同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…...
康耐视visionpro-CogAcqFifoTool工具详细说明
CogAcqFifoTool操作说明: ① 打开工具栏,双击或点击鼠标拖拽 添加CogAcqFifoTool ②.从图片采集设备/图像采集卡列表里选择对应的相机,视频格式选择图像格式。 Mono表示黑白图像,RGB表示彩色相机。点击初始化取相初始化相机。 ③…...
静态图片如何生成gif动画?一个网站在线实现
在当下这个媒体时代,各种各样的图片充斥着我们的生活。尤其是gif动图能够快速有效的传递信息,让用户更加直观的了解某个时间或是场景。非常的生动便捷,那么怎么弄制作gif动画图片呢?其实,只是gif动画的方法非常的简单&…...
Git 实战教程
Git 是一款强大的分布式版本控制系统,广泛用于团队协作与项目管理。本文将为你提供一份 Git 的实战教程,通过实例演示 Git 的基本用法和高级特性,帮助你快速上手 Git。 一、Git 基础 安装 Git 首先,你需要在你的计算机上安装 G…...
从零开始:在Unity中完美实现视频播放功能的完整指南(附常见报错解决方案)
从零开始:在Unity中完美实现视频播放功能的完整指南(附常见报错解决方案) 在游戏开发中,视频播放功能的应用场景越来越广泛——从开场动画、过场剧情到UI背景,视频元素能为玩家带来更丰富的视听体验。Unity作为主流的…...
实战应用:基于快马平台开发具备origin高级分析功能的在线工具
今天想和大家分享一个最近用InsCode(快马)平台做的实战项目——开发一个具备Origin高级分析功能的在线工具。作为一个经常需要处理实验数据的科研狗,Origin这类软件的分析功能确实强大,但每次都要安装本地软件实在麻烦。于是就想试试能不能做个在线版&am…...
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解 你是否曾面对一份复杂的化验单,需要快速理解其临床意义?是否在深夜值班时,想快速确认某个药物的相互作用?或者,作为一名医学生࿰…...
Linux环境下Python段错误全解析:从内存管理到线程安全的避坑手册
Linux环境下Python段错误全解析:从内存管理到线程安全的避坑手册 当你在深夜调试一个复杂的Python项目时,突然看到屏幕上跳出"Segmentation fault (core dumped)"的提示,那种感觉就像在高速公路上爆胎——明明代码逻辑看起来没问题…...
5个步骤彻底修复Windows更新问题:Reset Windows Update Tool完整指南
5个步骤彻底修复Windows更新问题:Reset Windows Update Tool完整指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool …...
太原烘焙培训排名
在太原选择烘焙培训机构时,许多朋友会关注不同机构的教学质量与特色。以下整理了一些选择时可以考虑的方面,供您参考。教学方式与内容部分机构采用以实操为主的教学模式,例如山西旭梦圆食品有限公司的课程安排中,实践操作占较大比…...
Java学习——String 类的不可变性、底层实现(JDK1.8+)
目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理(含 JDK 源码分析 / 反编译验证) 1. JDK1.8 String 核心源码解析 2. 字符串常量池(JDK1.8 底层) 3. 反编译验证(不可变性 编译器优…...
ESP32-S3离线语音唤醒实战:从单元测试到自定义指令集
1. ESP32-S3离线语音唤醒开发环境搭建 第一次接触ESP32-S3的语音识别功能时,我花了两天时间才把开发环境配置好。这里分享下我的踩坑经验,帮你节省时间。ESP-IDF的环境配置其实不难,但有几个关键点容易出错。 首先需要安装ESP-IDF v4.4或更高…...
DCT-Net人像卡通化效果展示:高清人脸转二次元虚拟形象作品集
DCT-Net人像卡通化效果展示:高清人脸转二次元虚拟形象作品集 一键将真人照片变成二次元虚拟形象,体验AI绘画的神奇魅力 1. 效果惊艳:从真人到二次元的华丽变身 DCT-Net人像卡通化技术能够将普通的人物照片转换成精美的二次元虚拟形象&#x…...
基于STM32的智能药箱系统开发实战:从硬件搭建到云端互联
1. 为什么需要智能药箱 记得去年我奶奶因为忘记吃药导致血压飙升住院,当时我就在想,如果能有个自动提醒吃药的装置该多好。后来发现这个问题其实困扰着很多家庭——据统计,65岁以上老年人中,有超过60%存在漏服、错服药物的情况。这…...
