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.mzph.cn/news/845515.shtml

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

相关文章

【动力电池的四种冷却方式】

文章目录 动力电池的四种冷却方式1.自然冷却2.风冷3.液冷4.直冷 动力电池的四种冷却方式 目前动力电池系统的热管理主要可分为四类&#xff0c;自然冷却、风冷、液冷、直冷。其中自然冷却是被动式的热管理方式&#xff0c;而风冷、液冷、直流是主动式的&#xff0c;这三者的主…

[运维|数据库] deepin V20.9 安装人大金仓数据库

系统环境 系统&#xff1a; deepin V20.9 安装 以KingbaseES_V008R006C008B0014_Lin64_install.iso示例安装人大金仓数据库 下载镜像 镜像下载地址 下载授权文件 授权文件下载地址 挂在镜像 sudo mount -o loop KingbaseES_V008R006C008B0014_Lin64_install.iso /mnt执行…

el-tree常用操作

一、定义 <el-treeclass"myTreeClass":data"dirTreeData":props"dirTreeProps":filter-node-method"filterDirTree":expand-on-click-node"false"node-key"id"node-click"dirTreeNodeClick":allow-…

Web前端三大主流框架介绍

Web前端三大主流框架分别是Angular、React和Vue.js。以下是关于这三个框架的详细介绍&#xff1a; Angular 来源&#xff1a;由Google开发。特点&#xff1a; 完整的框架&#xff1a;Angular是一个完整的框架&#xff0c;包括了数据绑定、组件化、路由、依赖注入等功能。类型安…

M-G364PD惯性测量单元:相机及微小层面的革命性应用

在现代科技飞速发展的今天&#xff0c;精准控制和精确测量是众多高端设备实现卓越性能的关键。爱普生推出的M-G364PD惯性测量单元&#xff08;IMU&#xff09;&#xff0c;因其卓越的性能和微小尺寸&#xff0c;成为相机以及其他微小层面应用的理想选择&#xff0c;为科技创新提…

【Spring】Spring之依赖注入源码解析(上)

目录 Spring中到底有几种依赖注入的方式&#xff1f; 手动注入 自动注入 XML的autowire自动注入 Autowired注解的自动注入 寻找注入点 桥接方法 注入点进行注入 字段注入 Set方法注入 Spring中到底有几种依赖注入的方式&#xff1f; 首先分两种&#xff1a; 手动注…

存储 Bean 对象更加简单的方式

前置操作 如果是在 spring-config 中添加 bean 标签来注册内容&#xff0c;每个类都要弄一次就显得麻烦和臃肿了&#xff0c;对于 new 操作而言就没有什么优势了。因此 spring 就引入了注解操作来实现对 Bean 对象的存储。 配置扫描路径 想要将对象成功的存储到 Spring 中&…

RustDesk服务器

一、安装node.js # cd /usr/local # wget https://registry.npmmirror.com/-/binary/node/v16.18.1/node-v16.18.1-linux-x64.tar.gz # tar -zxvf node-v16.18.1-linux-x64.tar.gz -C ./node-v16.18.1 # cd cd node-v16.18.1 # cd node-v16.18.1-linux-x64/ # mv * ../二、配置…

python onnxruntime DLL load failed: 找不到指定的模块

在安装ddddocr 报错&#xff1a;ImportError: DLL load failed while importing onnxruntime_pybind11_state: 找不到指定的模块 试了降到onnxruntime 1.8.0版本&#xff0c;升级pip再重装ddddocr均无效。 这个错误通常是因为缺少onnxruntime_pybind11_state.dll文件或者没有…

适用于STM32的U8G2回调函数例程

简介 U8g2 还包括 U8x8 库。U8g2 和 U8x8 的功能包括&#xff1a; U8g2 包括所有图形程序&#xff08;线/框/圆画&#xff09; 支持很丰富的字体库 需要微控制器中的一些内存来渲染显示屏&#xff08;需要消耗较多的ram空间资源&#xff09;U8x8 仅文本输出&#xff08;字符&am…

Liunx中使用他人身份来执行命令或新建文件

前言 在一些情况下。我们想要借助某个用户的身份来执行命令或者新建文件&#xff0c; 比如某个用户的bash是 nologin 或者 false。 该怎么做呢&#xff1f;&#xff1f; 答&#xff1a;使用 sudo -u 即可。 例如&#xff1a; sudo -u ygz1 touch temp1.txt哈哈哈&#xff0…

android gradle8.3 发布插件踩过的坑

之前写过gradle6.x和gradle7.x的插件&#xff0c;会有一些改动&#xff0c;到8.x我发现又有一些变化&#xff0c;记录一下&#xff0c;防止后边再遇到相同的情况 下边是插件的gradle文件配置 plugins {id("java-gradle-plugin") //会自动引入java-library、gradleAp…

【ES实战】ES集群机器磁盘IO过高告警分析

ES集群机器磁盘IO过高告警分析 文章目录 ES集群机器磁盘IO过高告警分析现象分析思路与手段获取告警机器的磁盘高IO时的文件通过IO文件确认索引分析思路 优化第一步&#xff1a;每个data实例用不同的磁盘第二步&#xff1a;业务调整数据写入的集中程度第三步&#xff1a;扩容 反…

摄影后期照片编辑工具:LrC2024 for Mac/win 中文激活版

LrC2024&#xff08;Lightroom Classic 2024&#xff09;是 Adobe 公司推出的一款专业级别的照片编辑和管理软件。它是 Lightroom Classic CC 的升级版&#xff0c;具有更多的功能和改进。 这款软件主要用于数字摄影师和摄影爱好者处理、编辑和管理他们的照片。它提供了一套强大…

android 调试UI 按钮无法点击事件问题

软件平台&#xff1a;Android11 硬件平台&#xff1a;QCS6125 问题&#xff1a;UI控件无法点击 首先&#xff0c;打开了Android自带的pointer_location报点轨迹&#xff0c;用电磁笔点击按钮&#xff0c;发现有点位&#xff0c;但是控件未见响应&#xff0c;基本排除硬件、驱动…

[英语单词] production quality

Our goal is to implement a production quality switch platform that supports standard management interfaces and opens the forwarding functions to programmatic extension and control. 说在openswitch的文档里有说这两词&#xff0c;含义是产品质量。是production修…

CAPL汽车编程语言实例

CAPL汽车编程语言实例 在汽车行业中&#xff0c;CAPL&#xff08;Communication Access Programming Language&#xff09;是一种广泛使用的编程语言&#xff0c;主要用于CAN&#xff08;Controller Area Network&#xff09;网络的开发和测试。CAPL语言以其强大的功能和灵活性…

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

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

【docker】docker启动bitnami/mysql

说明&#xff1a;-v 宿主机目录:docker容器目录&#xff0c;-p 同理 注意&#xff1a;/opt/bitnami/mysql/conf/bitnami 目录自定义conf的目录&#xff0c;不能使用原有的/opt/bitnami/mysql/conf 目录。 容器启动后可在宿主机的/宿主/mysql8.0/conf&#xff0c;添加my_custom.…

独立开发的轻量级简洁开源论坛BBS PHP源码

最新的轻量级开源论坛php源码发布啦&#xff01;这是一款独立开发的论坛系统&#xff0c;可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者&#xff0c;这款论坛系统非常适合你入门学习。不过&#xff0c;需要注意的是&#xff0c;由于它并没有进行商业化改造&#xf…