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增加了对缓冲区大小的限制,这样可以防止缓冲区溢出的发生。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx实战:日志打印自定义请求头

nginx的日志可以打印很多内容&#xff0c;但是有时候自定义的请求头该怎么打印呢&#xff1f;像下面这种场景&#xff1a; 其实很简单&#xff0c;设置日志打印格式log_format的时候&#xff0c;自定义的请求头用 【$http_自定义请求头名】 的格式就可以打印出来 例如你的自定义…

[机器学习] 低代码机器学习工具PyCaret库使用指北

PyCaret是一个开源、低代码Python机器学习库&#xff0c;能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具&#xff0c;极大地加快了实验周期&#xff0c;提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架&#xff08;如scikit-learn、XGBoost、L…

文件夹损坏0字节:原因、恢复方案与预防措施

在使用电脑或移动设备时&#xff0c;我们有时会遇到文件夹突然损坏并显示为0字节的情况。这种故障不仅令人困惑&#xff0c;更可能导致重要数据的丢失。本文将深入探讨文件夹损坏0字节的现象&#xff0c;分析其产生的原因&#xff0c;并给出两种有效的数据恢复方案&#xff0c;…

2023年亚太杯A题:果园采摘机器人的图像识别,一二题

问题一&#xff1a;基于附件1中提供的可收获苹果的图像数据集&#xff0c;提取图像特征&#xff0c;建立数学模型&#xff0c;计算每幅图像中的苹果的数量&#xff0c;并绘制附件1中所有苹果的分布直方图。 对于自动采摘机器人&#xff0c;首要的能力就是识别出苹果对象&#…

CrossOver支持M4新品吗?苹果M4芯片对游戏支持的怎么样?

CrossOver是一款可以在不同平台之间无缝切换的软件&#xff0c;它可以让你在MacOS或者Linux操作系统上运行Windows应用程序&#xff0c;无需安装双系统或虚拟机。CrossOver是基于Wine项目开发的&#xff0c;Wine是一个可以在非Windows平台上运行Windows应用程序的兼容层。 那么…

doris实战处理(一)doris表的建表规范、查询

感谢原文&#xff1a;https://mp.weixin.qq.com/s/tGbdkF62WU6qbAH0mqtXuA 第一部分&#xff1a;字符集规范 【强制】数据库字符集指定utf-8&#xff0c;并且只支持utf-8。 命令规范 【建议】库名统一使用小写方式&#xff0c;中间用下划线&#xff08;_&#xff09;分割&a…

使用第三方工具percona-xtrabackup进行数据备份与恢复

目录 准备工作 开始安装 innobackupex的使用 完全备份 增量备份 数据恢复 本次需要用到的软件 mysql 5.7.35percona-xtrabackup-24-2.4.8 ps&#xff1a;---MySQL必须是5.7的版本&#xff0c;在8.0之后已经不支持 percona-xtrabackup-24 系统版本CentOS7.9 准备工作 …

基于tensorflow和NasNet的皮肤癌分类项目

数据来源 https://challenge.isic-archive.com/data/#2019 数据划分 写了个脚本划分 for line in open(ISIC/labels.csv).readlines()[1:]:split_line line.split(,)img_file split_line[0]benign_malign split_line[1]# 0.8 for train, 0.1 for test, 0.1 for validati…

前端Vue自定义带加减按钮的数字输入框组件的设计与实现

随着前端技术的不断发展&#xff0c;开发的复杂度日益提升。传统的整块应用开发方式在面对小改动或小功能增加时&#xff0c;常常需要修改大量代码&#xff0c;导致整个系统的逻辑受到影响。为了解决这个问题&#xff0c;组件化开发成为了前端开发的必然趋势。 一、组件化开发…

【Python系列】Python 元组(Tuple)详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

springboot结合mybatis使用多数据源的方式

背景 最近有一个需求&#xff0c;有两个库需要做同步数据&#xff0c;一个Doris库&#xff0c;一个mysql库&#xff0c;两边的表结构一致&#xff0c;这里不能使用navicat等工具提供的数据传输之类的功能&#xff0c;只能使用代码做同步&#xff0c;springboot配置多数据…

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

GPT-4o:新一代人工智能技术的全方位解析引言

目录 &#x1f40b;引言 &#x1f40b;梳理 GPT 各版本之间的内容 &#x1f988;GPT-1&#xff1a;开创性的起点 &#x1f988; GPT-2&#xff1a;参数规模的大幅提升 &#x1f988; GPT-3&#xff1a;参数爆炸与多任务学习 &#x1f988;GPT-4&#xff1a;进一步提升的智…

嵌入式模块学习小记(未分类)

L298N电机驱动板模块 Output A&#xff1a;接DC 电机 1 或步进电机的 A和 A-&#xff1b; Output B&#xff1a;接DC 电机 2 或步进电机的 B和 B-&#xff1b; 5V Enable&#xff1a;如果使用输入电源大于12V的电源&#xff0c;请将跳线帽移除。输入电源小于12V时短接可以提…

【Python面试50题】

1. **基础概念** 1. Python 是解释型还是编译型语言&#xff1f; 2. 什么是 Python 的 GIL&#xff08;全局解释器锁&#xff09;&#xff1f; 3. 如何理解 Python 中的可变与不可变数据类型&#xff1f; 4. 解释一下 Python 中的 pass 语句。 5. Python 中的列…

让低代码平台插上AI的翅膀 - 记开源驰骋AI平台升级

让低代码系统插上AI的翅膀——驰骋低代码开发平台引领新时代 在当今日新月异的科技世界中&#xff0c;人工智能&#xff08;AI&#xff09;已经成为各个行业不可或缺的一部分。从制造业的自动化生产到金融行业的智能风控&#xff0c;再到医疗领域的精准诊断&#xff0c;AI技术…

FPGA-ARM架构与分类

ARM架构&#xff0c;曾称进阶精简指令集机器&#xff08;Advanced RISC Machine&#xff09;更早称作Acorn RISC Machine&#xff0c;是一个32位精简指令集&#xff08;RISC&#xff09;处理器架构。 主要是根据FPGA zynq-7000的芯片编写的知识思维导图总结,废话不多说自取吧 …

GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用&#xff1b;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战&#xff0c;Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…

Windows环境安装redis

1、下载redis https://github.com/tporadowski/redis/releases 2、解压 .zip 3、更改文件名 更改文件名称为&#xff1a;redis 4、将本地解压后的redis&#xff0c;作为本地服务器下的应用服务 从redis文件路径下&#xff0c;执行cmd .\redis-server --service-install re…

使用wireshark分析tcp握手过程

开启抓包 tcpdump -i any host 127.0.0.1 and port 123 -w tcp_capture.pcap 使用telnet模拟tcp连接 telnet 127.0.0.1 123 如果地址无法连接&#xff0c;则会一直重试SYN包&#xff0c;各个平台SYN重试间隔并不一致&#xff0c;如下&#xff1a; 异常站点抓包展示&#xff…