【初始C语言】多种输入格式的优劣

news2024/11/25 21:49:18

多种输入格式的优劣【初始C语言】

  • 一.多种输入格式的不同(只针对输入字符,字符串)
    • 1.scanf("%s",字符数组名)
    • 2.scanf("%[^\n]s",字符数组名)
    • 3.gets(字符数组名)
    • 4.fgets(字符数组名,规定输入字符的长度,stdin(标准输入流));

一.多种输入格式的不同(只针对输入字符,字符串)

1.scanf(“%s”,字符数组名)

scanf在输入字符串时,输入空格就自动停止。

int main()
{
	char arr[100] = { 0 };
	scanf("%s", arr);
	printf("%s", arr);
	return 0;
}

提示一下:字符串与整型数组不同,可以不用循环来依次打印数组中的元素,字符串数组可以直接打印。
在这里插入图片描述

2.scanf(“%[^\n]s”,字符数组名)

scanf(“%[^\n]s”,字符数组名),它的用法是你一直输入字符,遇到空格也没关系,直到输入’\n’就会停止。

int main()
{
	char arr[100] = { 0 };
	scanf("%[^\n]s", arr);
	printf("%s", arr);
	return 0;
}

在这里插入图片描述

3.gets(字符数组名)

gets(字符数组名),可以输入任意字符,遇到空格也没关系

int main()
{
	char arr[100] = { 0 };
	gets(arr);
	printf("%s", arr);
	return 0;
}

在这里插入图片描述
但是需要注意的是,gets()有一个问题,就是虽然你可以输入任意字符,但是get()函数本身是不知道你要输入多少,甚至是可以输入到数组越界!!!,所以大多数编译器会觉得gets()不安全,给个警告或是直接不给你用。
在这里插入图片描述
我用的是VS2019,虽然没有警告,但是gets未定义也算是警告了,慎用。

4.fgets(字符数组名,规定输入字符的长度,stdin(标准输入流));

fgets()比gets()安全的多,因为你已经明确告诉编译器你要输入多少字符,可能不会数组越界了,你会说为什么是”可能“,下面分三点告诉你。
1.当你输入的字符串长度比规定的多时
只会输出所规定的长度的字符,后面的字符不会输出

int main()
{
	char arr[10] = { 0 };
	fgets(arr,5,stdin);
	printf("%s", arr);
	return 0;
}

在这里插入图片描述
2.当你输入的字符串长度比规定的少时
直接输出!

int main()
{
	char arr[10] = { 0 };
	fgets(arr,10,stdin);
	printf("%s", arr);
	return 0;
}

在这里插入图片描述
3.当你规定的字符串长度超过数组长度时
不用想,数组越界,直接报错!
在这里插入图片描述

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

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

相关文章

光耦参数设置

2.1发光二极管电阻的选择 数据手册中,IF是发光二极管的允许最大正向电流,值是80mA。这是需要考虑的第一个条件。 再看第二张图,VF是二极管上的电压,图中给出,当IF是10mA的时候,VF的值最大是1.4V。这是需要考…

【python工具】html中表格转化为excel

背景 大家在实际的工作中可能会遇到这样的场景,查看某个统计的页面数据,其中一些数据是表格形式展示的,比如这是国家统计局关于人口统计的数据: 你想将表格内容下载下来根据自己的需要进行二次加工,但是页面没有提供下载功能或者需要你登陆才能下载。那么重点来了~~ 操…

初识 Spring (存储和获取 bean)

目录 初识 Spring总结 DI(依赖注入)Spring 项目的创建创建一个 Maven 项目添加 Spring 框架支持添加启动类 存储 bean 对象创建 bean将 bean 注册到容器中 获取并使用 bean 对象获取 bean 的方法一获取 bean 的方法二获取 bean 的方法三 ApplicationCont…

【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

Cesium态势标绘专题-位置点(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

RocketMQ教程-(4)-领域模型-消费者分组ConsumerGroup

定义​ 消费者分组是 Apache RocketMQ 系统中承载多个消费行为一致的消费者的负载均衡分组。 和消费者不同,消费者分组并不是运行实体,而是一个逻辑资源。在 Apache RocketMQ 中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以…

练习——动态内存分配的笔试题

今天我们分享几道经典的笔试题,做完直接变成陈泽 第一题 ~~ --------------------------------------------------------------------------------------------------~~ void GetMemory(char* p) {p (char*)malloc(100); } void Test(void) {char* str NULL;Get…

计算机网络第一章概述

第1章 网络概述 因特网(Internet) 是世界上最大的互连网络【小写i的internet是通用名词,互连的网络都叫internet】 因特网的前身是1969年创建的第一个分组交换网:ARPANT 普通用户如何接入因特网? 通过ISP接入因特网。ISP可以从因特网管理…

C/C++ 程序 IDE 开发工具 CLion

下载地址: https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/ 下载地址: https://www.jetbrains.com/clion/download/ https://www.jetbrains.com/clion/download/ 历史版本(老版本)下载地址: h…

基于RASC的keil电子时钟制作(瑞萨RA)(4)----使用串口进行程序烧写

基于RASC的keil电子时钟制作4_使用串口进行程序烧写 概述硬件准备视频教程软件准备hex文件准备UART串口与瑞萨开发板进行接线烧录 概述 本篇文章主要介绍如何使用UART串口烧写程序到瑞萨芯片,并以实际项目进行演示。 硬件准备 首先需要准备一个开发板&#xff0c…

Docker 续

Docker 续 一、Docker 网络1.1 Docker 网络实现原理1.2 Docker 的网络模式1.2.1 Docker 网络模式分类 1.3 如何创建各类网络模式1.4 host模式1.5 container模式1.6 none模式1.7 bridge模式1.8 自定义网络 二、资源控制2.1 Cgroup2.2 CPU 资源控制2.2.1 设置CPU使用率上限2.2.2 …

Attention详解(自用)

encoder-decoder 分心模型:没有引入注意力的模型在输入句子比较短的时候问题不大,但是如果输入句子比较长,此时所有语义完全通过一个中间语义向量来表示,单词自身的信息已经消失,可想而知会丢失很多细节信息&#xff0…

科技UI图标的制作

科技UI图标的制作,效果图如下: 一、新建合成 1、新建合成,命名为合成1,参数设置如下: 2、新建纯色,命名为分形 二、添加分形杂色 1、添加分形杂色 为纯色层“分形”,添加分形杂色&#xff0c…

Oracle根据日志执行相应的存过处理逻辑

背景: 项目上有两个不同的MPP数据库(HIVE、oceanbase),目前的问题是需要把hive的数据迁移到ob中。数据体量大于4000亿,文件容量有300T,hive作为计算库(大于120节点的集群)把结果数据计算出,存放在DWD层,hive的表有近40张,大部分是大宽表(大于100个字段),里面字段…

从C到C++ | C++入门(三)

目录 内联函数 auto 关键字 范围for 指针空值nullptr 内联函数 以inline修饰的函数叫内联函数&#xff0c;编译时C编译器会在调用函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;可提升程序的运行效率。 例子&#xff1a; #include <iostream> …

使用JMeter进行接口测试教程

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Ch…

RISCV - 2 “Zicsr“, CSR Instructions

RISCV - 2 “Zicsr“, CSR Instructions 1 CSR Instructions2 CSR Access Ordering3 CSR指令集类型 CSR&#xff1a;Control and Status Register RISCV - 1 RV32/64G指令集清单 RISC-V defines a separate address space of 4096 Control and Status registers associated w…

Java集合之Map

HashMap集合 HashMap的特点 HashMap的常用方法 ①.put(K key, V value) 将键&#xff08;key&#xff09;/值&#xff08;value&#xff09;映射存放到Map集合中 public class Test {public static void main(String[] args) {HashMap<String, Integer> map new Hash…

Python入门【生成器推导式创建元组、字典、字典元素添加、修改、删除、序列解包、字典核心底层原理、集合 】(六)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

HTML :深入了解超文本标记语言

文章目录 前言HTML 简介HTML 基本结构HTML 标记HTML 文本标记HTML 图像标记HTML 链接标记 HTML 表单HTML 表格HTML 列表HTML 媒体元素HTML 语义化 前言 欢迎来到本篇博客&#xff0c;我将带你深入了解 HTML&#xff08;超文本标记语言&#xff09;。作为前端开发的基础&#x…