当前位置: 首页 > news >正文

【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.103float 
%e、%E浮点数。以指数形式输出单、双精度实数。例如:7.12e4float 
%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(str20stdin)从标准输入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 &#xff1a;格式化输出&#xff0c;输出到标准输出stdout中。 printf&#xff1a; int print…...

C、C++、C#中.vscode下json文件记录

C launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"name": &quo…...

2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现&#xff1a; 随着互联网的发展&#xff0c;流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好&#xff0c;自动推荐并播放其它音乐。由于每个人喜好…...

使用ARCore深度API实现点云采集

一、深度API 本小节内容摘自ARCore官方文档。 ARCore 深度API Depth API 可助力实现对象遮挡、提升沉浸感和新颖的互动体验&#xff0c;从而增强 AR 体验的真实感。 在下图中&#xff0c;右侧画面是采用深度API进行遮挡后的效果&#xff0c;与左侧图相比更加真实。 深度值 给…...

软考数据库

目录 分值分布1. 事务管理1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别&#xff1a; 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 2. SQL语言发权限收权限视图触发器…...

Echarts 自适应宽高,或指定宽高进行自适应

文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长&#xff0c;形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素&#xff0c;然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…...

体验报告:为什么Claude-3是码农和学者的新宠?

在这个充斥着海量信息的新时代&#xff0c;人工智能的飞速发展带来了翻天覆地的变化。特别是在编程、学术探索以及专业文案创作等领域&#xff0c;AI的助力显得格外关键。最近&#xff0c;我有机会尝试了一种革命性的人工智能工具——Claude-3&#xff0c;其表现令我震惊&#…...

接口自动化框架搭建(九):接入钉钉消息通知

1&#xff0c;jenkins安装钉钉插件 2&#xff0c;在钉钉群聊设置机器人 3&#xff0c;jenkins配置钉钉 根据情况选择&#xff1a; 除了这些&#xff0c;其他不用配置&#xff0c;配置完成点击确认 4&#xff0c;项目配置 添加后保存 5&#xff0c;测试下效果 构建完成后&a…...

一、点击视频下载(通过视频url实现);二、点击下载视频按钮,视频以压缩包形式下载(但未实现压缩视频)

一、点击视频下载&#xff08;通过视频url实现&#xff09; <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树 特点&#xff1a;一个节点当中可以有多个值&#xff0c;节点内部key 值是有序的&#xff0c;节点内部存储的是key-value类型的数据 磁盘中文件存储用B树。 4阶B树一个节点最多三个key值 5阶B树一个节点最多四个key值 B树有很多的分支&…...

评价指标_Precision(精确率)、Recall(召回率)和Accuracy(准确率)区别和联系

Precision&#xff08;精确率&#xff09;、Recall&#xff08;召回率&#xff09;和Accuracy&#xff08;准确率&#xff09;是机器学习和信息检索领域常用的评价指标&#xff0c;它们用于评估分类器或检索系统的性能&#xff0c;但各自关注的方面略有不同。 Precision&#x…...

【React】React AJAX

在React中使用AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种常见的做法&#xff0c;用于从服务器获取数据并在组件中显示。尽管AJAX的名字中包含了XML&#xff0c;但现在更多地使用JSON&#xff08;JavaScript Object Notation&#xff09;作为数据交换格…...

vue 移动端弹窗带滚动效果 滚动到底的时候弹窗下的页面会跟着滑动

<template><div class"wrap" :style"dynamicStyle"><!--dynamicStyle主要是介个 通过computed设置postion的值 弹窗的时候设置为fixed 关闭弹窗的时候设置为unset--><div class"banner-wrap"><img src"/assets/…...

Linux-3 yum和vim

目录 本节目标&#xff1a; Linux 软件包管理器 yum 什么是软件包 1.yum是什么&#xff1f;软件包&#xff1f; 2.Linux(centos)的生态 3.yum的相关操作 我怎么知道我应该安装什么软件&#xff1f; 4.yum的本地配置 关于 rzsz 查看软件包 Linux编辑器-vim使用 1.v…...

什么是计算机视觉?计算机视觉:从基础到前沿

引言 计算机视觉&#xff0c;作为人工智能的一个重要分支&#xff0c;致力于赋予机器“看”的能力——即从图像或视频中理解和解释视觉信息的能力。这项技术的发展为自动驾驶汽车、面部识别、机器人导航等多种应用开辟了道路&#xff0c;正在逐步改变我们的工作和生活方式。本…...

Java中的可变字符串

Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…...

C++多线程:单例模式与共享数据安全(七)

1、单例设计模式 单例设计模式&#xff0c;使用的频率比较高&#xff0c;整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式&#xff0c;同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…...

康耐视visionpro-CogAcqFifoTool工具详细说明

CogAcqFifoTool操作说明&#xff1a; ① 打开工具栏&#xff0c;双击或点击鼠标拖拽 添加CogAcqFifoTool ②.从图片采集设备/图像采集卡列表里选择对应的相机&#xff0c;视频格式选择图像格式。 Mono表示黑白图像&#xff0c;RGB表示彩色相机。点击初始化取相初始化相机。 ③…...

静态图片如何生成gif动画?一个网站在线实现

在当下这个媒体时代&#xff0c;各种各样的图片充斥着我们的生活。尤其是gif动图能够快速有效的传递信息&#xff0c;让用户更加直观的了解某个时间或是场景。非常的生动便捷&#xff0c;那么怎么弄制作gif动画图片呢&#xff1f;其实&#xff0c;只是gif动画的方法非常的简单&…...

Git 实战教程

Git 是一款强大的分布式版本控制系统&#xff0c;广泛用于团队协作与项目管理。本文将为你提供一份 Git 的实战教程&#xff0c;通过实例演示 Git 的基本用法和高级特性&#xff0c;帮助你快速上手 Git。 一、Git 基础 安装 Git 首先&#xff0c;你需要在你的计算机上安装 G…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...