数组的输入与输出

article/2025/10/6 15:46:43

前言:

我们知道对一个字符数组进行输入与输出时会用到:
输入:scanf,getchar,gets

输出:printf,putchar,puts

然而可能还有很多的朋友对这些还不是很了解,今天让我们共同学习数组的输入与输出吧。

%c格式是用于输入单个字符的,其能够识别换行字符或者空格字符,并保存于字符数组当中;

%s格式是用来输入一个字符串的,其作用可以识别一个字符串的结束


目录

1,数组的输入:

(1)scanf:

(2)getchar:

(3)gets:

2,数组的输出

(1)printf:

(2)putchar:

(3)puts: 

 总结:


1,数组的输入:

(1)scanf:

一般情况下,scanf是可以直接使用的,但是有些编译器可能会报错,如果出现编译器报错,可以尝试在代码顶部添加:#define _CRT_SECURE_NO_WARNINGS

当我们输入多个字符且使用循环输入(类似于for)时注意,应使用“%c”,在这样的情况之下将可以正常读取空格键

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{char str[5];for (int i = 0; i < 5; i++){scanf("%c", &str[i]);}for (int i = 0; i < 5; i++){printf("%c", str[i]);}return 0;
}

有的朋友可能会说,可不可以直接输入且不使用循环呢?当然可以了,这样的话就需要使用到scanf("%s",str)了,类似于下面这个代码:

#include<stdio.h>
int main()
{char str[5];scanf("%s", str);printf("%s", str);return 0;
}

但是需要注意的是,使用这个代码时最多打印出连续输入的4位数【因为敲换行符(也就是回车键)那一刻换行符将占用一个空间】,比如输入“abcd”时,代码会正常运行,输入“abcde”时,代码可以报错提示“Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted”,即栈堆拥挤,而且输入时检测到回车或者是说空格时,数组录用将会停止,比如仍然是这个代码,我们输入“a bc”时,仅仅只会打印“a”, 而且当出现空格时,无论后面输入多少个数字都不会提示栈堆拥挤,值得注意的是,该字符串的最后一位数一般是空字符,

比如当输入“12 s”时打印出str[2]的结果是“null”即为空字符,空格同理


 

(2)getchar:

getchar是用来输入单个字符的,值得注意的是getchar可以识别空格和换行符并且保存下来,就比如下面这个代码,当输入“g”他就会打印“g”,但如果输入“gg”时,他仍然会打印“g”,验证结果如下:

#include<stdio.h>
int main()
{int i = getchar();printf("%c", i);return 0;
}

我们一般可以使用getchar来清空空格符(详情见末尾例


(3)gets:

gets可是一位大佬,它可以用来输入字符串并将其保存到一维数组当中,它的用法与scanf("%s",str)相似,故而gets仅仅可以用来作为“char”型的字符输入,也同样需要考虑输入结束时敲下空格也占用一个空间,使用方法与scanf("%s",str)一致,这里就不过多赘述了,注意:但是gets可以识别空格。


2,数组的输出

(1)printf:

提到输出那当然是我们初学c语言时第1个接触的好哥们“printf”了,这个是我们熟悉的好兄弟了,就不过多赘述了,上面的示例基本上也用的是printf来做的输出。


(2)putchar:

putchar也是用来输出单个字符的与printf("%c",a)相同,但个人感觉用的时候比较少,也有可能是我学艺不精,还没有到使用它的时候。

一般情况下我们使用getchar于putchar相联用,比如说下面的代码示例:

#include<stdio.h>
int main()
{char a = getchar();;char b = getchar();putchar(a);putchar(b);return 0;
}


(3)puts: 

puts是本人比较喜欢的一个输出执行代码了,因为它相当于是printf("%s\n",str)了,puts可以直接将数组当中的数据进行输出,并且会进行自动换行,注意:puts当读到“\0”时会终止输出,比如说下面这张图片,理论上来说他应该会读取“ac1s2”,但是因为str[3]已经被替换成了“\0”,故而会在str[3]处进行终止,当然printf("%s\n",str)也会遇到这样的情况,但如果说一定要打印出来的话,又可以用到我们的好兄弟(printf+for)了, 当然我们也可以使用(putchar+for)的组合,不过因为str[3]已经被替换成“\0”了,故而不会打印。

 

 总结:

通过这篇文章,我们不难发现,无论是输入还是输出,基本上可以以scanf(输入)和printf(输出)来替换,所以再一次强调基础非常的重要呀,当然点赞也非常重要【Doge】


http://chatgpt.dhexx.cn/article/81wwfmpl.shtml

相关文章

Java二维数组的输出

1. Java二维数组的输出<1> (1) 输出结果右对齐"%5d" public class HelloWorld {public static void main(String[] args){int myArray[ ][ ] { {1,2}, {7,2}, {3,4} };for(int i0; i<3; i){for (int j0; j<2; j)System.out.printf("%5d",my…

Java中数组的输入输出

数组的输入 首先声明一个int型数组 int[] a 或者 int a[] 给数组分配空间 anew int[10]; 和声明连起来就是int[] anew int[10]; 或者是 int a[]new int[10]; 给数组赋值 a[0]1;//0代表的是数组的第1个元素 ,元素下标为0 a[1]1;//1代表的是数组的第2个元素 ,元素下标为0 …

Java 数组的输入输出

Java中要对控制台进行输入操作的话要调用Scanner类&#xff0c;定义一个扫描的对象&#xff0c;例&#xff1a; //要导入java.util.Scanner; Scanner scanner new Scanner(System.in); 这样便打开了输入流&#xff0c;接下来定义数组&#xff1a; int[] n new int[4];//使…

Java中字符串数组的输入与输出

今天刷题遇到一个坑&#xff0c;老是接收不到字符串数组。即用str[i]sc.nextLine();这样的方式去接收数组的话&#xff0c;打印的时候总是会少一个。 import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc new Scanner(System.i…

java中打印输出数组内容的三种方式

今天输出数组遇到问题&#xff0c;学习一下打印输出数组内容的几种方式 错误示范&#xff1a;System.out.println(array);  //这样输出的是数组的首地址&#xff0c;而不能打印出数组数据。&#xff08;唉&#xff0c;我开始就是这么写的。。。&#xff09; 一维数组&#…

NTP协议之旅

NTP协议之旅 What---啥是NTPWhy---为什么需要NTPHow---NTP实现原理Do---NTP实战使用HCL 华三模拟器进行NTP配置抓包分析 What—啥是NTP NTP是在分布式网络中&#xff0c;进行时钟同步的协议&#xff0c;其具有较高的时间同步精度。所使用的传输层协议为UDP&#xff0c;使用端口…

ntrip协议

https://blog.csdn.net/wandersky0822/article/details/88558456这篇介绍的是RTK精确定位的原理&#xff0c;及影响精确定位的各种条件。 这一篇介绍的就比较细&#xff0c;仅仅介绍RTK 差分信息的 产生 申请与分发。 最近要做一个GPS RTK基站&#xff0c;也就是为RTK客户端提…

Ntrip协议简介

Ntrip通讯协议1.0 1 什么是Ntrip&#xff1f; CORS&#xff08;Continuously Operating Reference Stations&#xff09;就是网络基准站&#xff0c;通过网络收发GPS差分数据。用户访问CORS后&#xff0c;不用单独架设GPS基准站&#xff0c;即可实现GPS流动站的差分定位。 访问…

NTP技术介绍

NTP 简介 NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是由RFC 1305定义的时间同步协议&#xff0c;用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输&#xff0c;使用的UDP端口号为123。 使用NTP的目的是对网络内所…

NTPv4协议解析

前言 本文的撰写基于RFC5905.NTP 是时间网络控制协议&#xff0c;V4版本相交V3版本&#xff0c;修复了V3存在的一些问题。尤其是NTPV4的拓展时间戳鼓励使用浮动双数据类型&#xff0c;这样使得NTP能够更好的支持1ns的场景&#xff0c;轮询间隔也从上一代的最多1024s拓展到了36…

NTP 网络时间协议

目录 基本原理 结构 工作模式 单播C/S模式 对等体模式 广播模式 组播模式 多播模式 NTP访问控制 访问权限 KOD 认证功能 配置 NTP用于在一系列分布式时间服务器与客户端之间同步时钟。基于IP和UDP。NTP报文通过UDP传输&#xff0c;端口号是123. NTP主要应用于网络中…

NTP协议简介

NTP协议简介 一. datec dates分析1. 同步流程2. 缺陷 二. NTP(**Network Time Protocol**)1. NTP概述 [1、2、3、7]2. NTP的时钟同步原理与授时精度分析 [3、1、10]NTP的时钟同步原理NTP的授时精度分析 3. NTP中其它的提高授时精度的措施[1、6]参考资料 三. 对NTP改进以获得更高…

ntp同步详解

一、ntp服务是什么 1.定义 NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。 2.发展 首次记载在Internet Engineering Note之中&#xff0c;其精确度为数百毫秒。 稍后出现了首个时间协议的规范RFC-778&#xff0c;它被命…

NTP协议代码实现

本文将讲解NTP的代码实现和调试过程的一些记录。 首先&#xff0c;进行NTP报文结构体的构建。 //宏定义 #define NTP_TIMESTAMP_DELTA 2208988800ull //number of seconds between 1900 and 1970&#xff0c;1900-1970的时间差 #define SEC_TIME_ZONE (8*60*60) //B…

什么是Ntrip?Ntrip协议简介

文章目录 Ntrip通讯协议1.0Ntrip是什么&#xff1f;Ntrip系统组成NtripServerNtripClient4.1 获取源列表4.2 获取差分数据 其他资料 Ntrip通讯协议1.0 Ntrip是什么&#xff1f; NTRIP是在互联网上进行RTK数据传输的协议。所有的 RTK数据格式&#xff08;NCT&#xff0c;RTCM&…

网络时间协议NTP介绍

定义 网络时间协议NTP&#xff08;Network Time Protocol&#xff09;是TCP/IP协议族里面的一个应用层协议。NTP用于在一系列分布式时间服务器与客户端之间同步时钟。NTP的实现基于IP和UDP。NTP报文通过UDP传输&#xff0c;端口号是123。 目的 随着网络拓扑的日益复杂&#xf…

计算机网络中网络时间协议NTP是什么原理?

NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。在计算机的世界里&#xff0c;时间非常地重要&#xff0c;例如对于火箭发射这种科研活动&#xff0c;对时间的统一性和准确性要求就非常地高&#xff0c;是按照A这台计算机的时…

NTP协议实现

本文出处&#xff1a; http://www.eefocus.com/html/10-04/94667s.shtml 10.4 实验内容 ——NTP协议实现 1&#xff0e;实验目的 通过实现NTP协议的练习&#xff0c;进一步掌握Linux网络编程&#xff0c;并且提高协议的分析与实现能力&#xff0c;为参与完成综合性项目打下良好…

NTP

NTP(Network Time Protocol) 网络时间协议 NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC&#xff0c;其精度在局域网内可达0.1ms&#xff0c;在互联网上绝大多数的地方其精度…

NTP与PTP

NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是由RFC 1305定义的时间同步协议&#xff0c;用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输&#xff0c;使用的UDP端口号为123。 使用NTP的目的是对网络内所有具有时钟的…