c基础 - 输入输出

目录

一.scanf() 和 printf() 函数

1.printf

2.scanf

二 . getchar() & putchar() 函数

1.int getchar(void) 

2.int putchar(int c)

三. gets() & puts() 函数


一.scanf() 和 printf() 函数

#include <stdio.h>

需要引入头文件,stdio.h

1.printf

printf函数是C语言中用于输出格式化字符串的标准库函数。它允许你按照指定的格式输出各种类型的数据。

下面是一些常用的格式化占位符及其含义:

  1. %d 或 %i - 用于输出十进制整数。
  2. %c - 用于输出单个字符。
  3. %s - 用于输出字符串(以空字符'\0'结束)。
  4. %f - 用于输出浮点数,默认保留小数点后六位。
  5. %e 或 %E - 用于科学记数法表示浮点数.
  6. %x - 用于输出无符号十六进制整数,小写字母表示a-f。
  7. %X - 同%x,但是使用大写字母A-F表示十六进制数。
  8. %p - 用于输出指针的地址值,通常以十六进制形式并前缀0x输出。
  9. %ld - 用于输出长整型(long int)的十进制数。
  10. %lu - 用于输出无符号长整型(unsigned long int)的十进制数。
  11. %lld - 用于输出长 long 整型(long long int)的十进制数。
  12. %llu - 用于输出无符号长 long 整型(unsigned long long int)的十进制数。
  13. %o - 用于输出无符号八进制整数。
  14. %h - 用于指定接下来的整数类型为short类型(
  15. %z - 用于输出size_t类型的大小,通常用于数组长度或字符串长度等。
  16. %n - 写入到一个整型参数中输出到现在为止的字符数量0

每个格式化占位符还可以加上一些选项来控制输出格式,比如:

  • 宽度%5d 表示输出至少5个字符宽的整数,不足部分前面补空格。
  • 精度%.2f 表示浮点数保留两位小数。
  • 左对齐%-5d 表示输出的整数左对齐,不足部分在右侧补空格。
  • 符号%+d 强制输出正负号,% d 对正数前加空格,%-d 对正数前加符号。
  • 进制基数%#x 以十六进制输出,并在前面加上0x

2.scanf

scanf函数是C语言中的标准输入函数,用于从标准输入(通常是键盘)读取数据并根据指定的格式解析。与printf类似,scanf也使用格式字符串来指定如何读取数据。下面是scanf中一些常用的格式说明符及其含义:

  1. %d 或 %i - 读取十进制整数。
  2. %c - 读取单个字符,不会跳过空白字符。
  3. %s - 读取字符串,遇空格、制表符、换行符等空白字符停止,或直到最大字符数读满
  4. %f - 读取浮点数。
  5. %lf - 用于读取double类型的浮点数。
  6. %u - 读取无符号整数。
  7. %x - 读取十六进制整数,字母abcdef可以是大写或小写。
  8. %p - 读取指针地址(通常用于调试,不常用)。
  9. %[] - 读取一组指定的字符集内的字符,例如%[0-9]读取数字。

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main()   
{int a;printf("请输入一个整数  \n");scanf("%d",&a);printf("第 %d  次   \n", a);return 0;}

二 . getchar() & putchar() 函数

1.int getchar(void) 

getchar从屏幕读取下一个可用的字符,并把它返回为一个整数。

2.int putchar(int c)

putchar把字符输出到屏幕上,并返回相同的字符。

例子:

#include <stdio.h>int main()   
{char c; c = getchar();//接收一个字符putchar(c); //输出一个字符return 0;}

三. gets() & puts() 函数

和上面的区别就是,

gets读取多个字符,以回车键结束

puts输出多个字符

代码

#include <stdio.h>int main()   
{char c[100];gets_s(c);//接收一个字符puts(c); //输出一个字符return 0;}

为什么用的gets_s.是因为gets函数存在一个重大的安全隐患:它没有长度检查机制.

gets函数在C语言中用于从标准输入读取一行文本,直到遇到换行符或文件结束为止。然而,gets函数存在一个重大的安全隐患:它没有长度检查机制,这意味着如果用户输入的字符串超过了缓冲区的大小,将会导致缓冲区溢出,这可能被恶意利用来执行任意代码,造成安全漏洞。

为了解决这个问题,C11标准引入了更安全的替代函数gets_s(在某些实现中可能是fgets更常见且推荐)。gets_s相比gets增加了对缓冲区大小的限制,这样可以防止缓冲区溢出的发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337450.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

23种软件设计模式——工厂模式

工厂模式 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一&#xff0c;它提供了一种创建对象的方式&#xff0c;使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 通过使…

高级Web Lab2

高级Web Lab2 12 1 按照“Lab 2 基础学习文档”文档完成实验步骤 实验截图&#xff1a; 2 添加了Web3D场景选择按钮&#xff0c;可以选择目标课程或者学习房间。

[数据集][目标检测][数据集][目标检测]智能手机检测数据集VOC格式5447张

数据集格式&#xff1a;Pascal VOC格式(不包含分割的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;5447 标注数量(xml文件个数)&#xff1a;5447 标注类别数&#xff1a;1 标注类别名称:["phone"] 每个类别标注的框数&#xff…

详解生成式人工智能的开发过程

回到机器学习的“古老”时代&#xff0c;在您可以使用大型语言模型&#xff08;LLM&#xff09;作为调优模型的基础之前&#xff0c;您基本上必须在所有数据上训练每个可能的机器学习模型&#xff0c;以找到最佳&#xff08;或最不糟糕&#xff09;的拟合。 开发生成式人工智能…

爬虫在金融领域的应用:股票数据收集

介绍 在金融领域&#xff0c;准确及时的数据收集对于市场分析和投资决策至关重要。股票价格作为金融市场的重要指标之一&#xff0c;通过网络爬虫技术可以高效地从多个网站获取实时股票价格信息。本文将介绍网络爬虫在金融领域中的应用&#xff0c;重点讨论如何利用Scrapy框架…

【JVM精通之路】垃圾回收-三色标记算法

首先预期你已经基本了解垃圾回收的相关知识&#xff0c;包括新生代垃圾回收器&#xff0c;老年代垃圾回收器&#xff0c;以及他们的算法&#xff0c;可达性分析等等。 先想象一个场景 最开始黑色节点是GC-Roots的根节点&#xff0c;这些对象有这样的特点因此被选为垃圾回收的根…

Python3位运算符

前言 本文介绍的是位运算符&#xff0c;位运算可以理解成对二进制数字上的每一个位进行操作的运算&#xff0c;位运算分为 布尔位运算符 和 移位位运算符。 文章目录 前言一、位运算概览1、布尔位运算符1&#xff09;按位与运算符 ( & )2&#xff09;按位或运算符 ( | )3…

【设计模式深度剖析】【5】【结构型】【桥接模式】| 以电视和遥控器为例加深理解

&#x1f448;️上一篇:组合模式 | 下一篇:外观模式&#x1f449;️ 设计模式-专栏&#x1f448;️ 目 录 桥接模式(Bridge Pattern)定义英文原话是&#xff1a;直译理解 4个角色UML类图代码示例 应用优点缺点使用场景 示例解析&#xff1a;电视和遥控器UML类图 桥接模式…

5G NR TAE TEST

环境配置&#xff1a; 测试TAE时&#xff0c;需要比对不同的Antenna Port之间的差异来测试 配置DL 2 layer MU的case layer1&#xff1a;通过设置weight&#xff0c;只有一个物理天线上有weight&#xff0c;其他天线上的weight为0&#xff0c;该天线的DMRS DMRS Port设置为1…

lynis安全漏洞扫描工具

Lynis是一款Unix系统的安全审计以及加固工具&#xff0c;能够进行深层次的安全扫描&#xff0c;其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息&#xff0c;脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…

谢宁DOE培训的课程大纲分享

谢宁DOE培训旨在深入讲解谢宁问题解决方法在质量管理中的重要作用&#xff0c;学会如何利用谢宁问题解决方法工具&#xff0c;在不中断生产过程的前提下&#xff0c;找出生产中碰到的复杂而顽固的问题的原因&#xff0c;从而彻底地解决问题。 【课程内容】 第一部分&#xff1…

某咨询公司的大数据解决方案介绍(32页PPT)

方案介绍&#xff1a; 本咨询公司的大数据平台解决方案以企业实际需求为出发点&#xff0c;结合先进的大数据技术和行业经验&#xff0c;为企业提供一站式的大数据服务。通过实时数据收集与处理、深度数据分析与挖掘、可视化数据展示以及灵活的数据应用与扩展&#xff0c;帮助…

vmware workstation 17.0.0 ubuntu删除快照导致无法启动的问题打不开磁盘xxxxxxx或它所依赖的某个快照磁盘

在使用vmware workstation的时候 在我删除多余的快照的时候&#xff0c;发现删除快照后打不开虚拟机了&#xff0c; 提示&#xff1a; 打不开此虚拟磁盘的父磁盘打不开磁盘“D:\Virtual Machines\Ubuntu 64 位\Ubuntu 64 位-000003.vmdk”或它所依赖的某个快照磁盘。模块“Dis…

海外动态IP代理可以用来批量注册邮箱吗?

无论是个人还是企业&#xff0c;都需要使用邮箱进行沟通、注册账号、接收通知等多种用途。然而&#xff0c;由于互联网服务商为了防止滥用和垃圾邮件的传播&#xff0c;通常对注册邮箱设置了一定的限制&#xff0c;如IP限制、验证码验证等。为了解决这些问题&#xff0c;海外动…

2.2 Docker安装redis

2.2 Docker安装redis 1.安装redis docker run --restartalways -p 6379:6379 --name myredis -d redis:7.0.12 --requirepass Hgh675667%–restartalways 开机自启动 -p 6379:6379 端口映射 –name myredis 容器名称 -d redis:7.0.12 redis版本 –requirepass Hgh675667% 密…

【网络安全的神秘世界】在win11搭建pikachu靶场

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 下载pikachu压缩包 https://github.com/zhuifengshaonianhanlu/pikachu 下载好的pikachu放在phpstudy_pro/www目录下 创建pikachu数据库 打开phpstudy软件…

智慧医院物联网建设-统一管理物联网终端及应用

近年来&#xff0c;国家卫健委相继出台的政策和评估标准体系中&#xff0c;都涵盖了强化物联网建设的内容。物联网建设已成为智慧医院建设的核心议题之一。 作为医院高质量发展的关键驱动力&#xff0c;物联网的顶层设计与网络架构设计规划&#xff0c;既需要结合现代信息技术的…

去掉el-table表头右侧类名是gutter,width=17px的空白区域(包括表头样式及表格奇偶行样式和表格自动滚动)

代码如下&#xff1a; <el-table:data"tableData"ref"scroll_Table":header-cell-style"getRowClass":cell-style"styleBack"height"350px"style"width: 100%"><el-table-column prop"id" l…

C# 校验Json格式

错误json&#xff1a;错误值 -2146.379 [{"Key": "surface_heights_average","Value": "-2122.739nm","Description": "surface_heights_average"}, {"Key": "surface_heights_max","V…

项目纪实 | 版本升级操作get!GreatDB分布式升级过程详解

某客户项目现场&#xff0c;因其业务系统要用到数据库新版本中的功能特性&#xff0c;因此考虑升级现有数据库版本。在升级之前&#xff0c;万里数据库项目团队帮助客户在本地测试环境构造了相同的基础版本&#xff0c;导入部分生产数据&#xff0c;尽量复刻生产环境进行升级&a…