我们想要使用 C 语言输入一组 n 个字符,用字符数组来保存。写成的代码如下:

#include <stdio.h>int main() {// 字符数组的长度int n;printf("请输入 n:");scanf("%d", &n);// 用来存放一组字符char letters[n];printf("请输入 %d 个英文字母:\n", n);// 通过循环将输入的字符保存到字符数组for (int i = 0; i < n; i++) {scanf("%c", &letters[i]);}// 打印字符数组中的所有字符for (int i = 0; i < n; i++) {printf("%c\t", letters[i]);}
}

结果如下:

请输入 n:5
请输入 5 个英文字母:
a b c d ea               b

并不是我们期望的a b c d e。这是为什么呢?通过debug调试可以发现:

发现第一个字符是换行符'\n',而第二个字符才是'a',而第三个字符是' '

因为它除了获取输入的英文字母字符之外,还会获取到换行符和空格。第一个字符是换行符'\n'是英文输入数字5之后的回车。而第三个字符是空格字符' '是因为输入英文字母'a'字符之后间隔的空格字符,所以结果会是上面的输出。

所以如果我们想要获取到正确的英文字母字符数组,那么我们必须吸收掉这些额外的字符(换行符或者空格符),使用 getchar() 函数来完成。代码如下:

#include <stdio.h>int main() {// 字符数组的长度int n;printf("请输入 n:");scanf("%d", &n);// 用来存放一组字符char letters[n];printf("请输入 %d 个英文字母:\n", n);getchar();// 吸收掉换行符// 通过循环将输入的字符保存到字符数组for (int i = 0; i < n; i++) {scanf("%c", &letters[i]);getchar();// 吸收掉空格字符}// 打印字符数组中的所有字符for (int i = 0; i < n; i++) {printf("%c\t", letters[i]);}
}

结果如下:

请输入 n:5
请输入 5 个英文字母:
a b c d e
a       b       c       d       e

C语言零碎知识点之输入字符数组相关推荐

  1. C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果。

    /*C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果.*/#include <stdio.h> #include <conio.h& ...

  2. c语言中字符串数组应用,C语言中字符变量字符串和字符数组应用.doc

    C语言中字符变量字符串和字符数组应用 字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错 ...

  3. C语言小题,用字符数组输出一个菱形图。

    题目详情: 前言: 此篇面向C语言的初学者,针对字符数组与数组遍历的练习. 正文: #include<stdio.h>int main() {void giao();giao();retu ...

  4. C语言零碎知识点之字符串数组

    字符串数组的表示形式 在C语言中字符串数组有两种表示方法: 第一种,二维字符数组 可以利用二维字符数组来表示字符串,格式是:char strs[row][col];.例如: char strs[4][ ...

  5. 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析

    之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...

  6. C++语言篇 第六章 字符数组及函数(不能用在string字符串中)

    字符数组 数组中的每个元素都是一个字符的数组称为"字符数组".有时,把一维字符数组又称为"字符串".定义字符数组的方法与定义其他类型数组的方法类似. 对于字符数 ...

  7. 用java怎么输入字符数组_Java程序填充用户输入的字符数组

    对于用户输入,将Scanner类与System.in一起使用.获取输入后,将其转换为字符数组-char[] a = s.next().toCharArray(); 现在,显示它直到字符数组的长度,即用 ...

  8. C语言中将字符串赋值给字符数组的问题

    问不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值." 那么str1="China"是不是错的? char a[ ]='toyou'; 为什么是正确的呢? ...

  9. c语言程序设计输入c,C语言程序设计(计算输入字符)

    编写一个程序,该程序读取输入,知道遇到#字符,然后报告读取的空格数目.读取换行符数目以及读取其他所有的字符数目,打印读取到的数目 我虽然写了一个代码,可能是我理解错题意了,有很多问题,比如输入一个#号 ...

  10. 分段函数返回字符c语言,C++对cin输入字符的判断及分段函数处理方法示例

    本文实例讲述了C++对cin输入字符的判断及分段函数处理方法.分享给大家供大家参考,具体如下: 这两个本来也不是什么问题,然而真正遇到还是有地方可以研究的.首先是C++对于cin输入的判断,有时候你定 ...

最新文章

  1. 「查缺补漏」巩固你的 RocketMQ 知识体系
  2. 独家 | 解析Tansformer模型—理解GPT-3, BERT和T5背后的模型(附链接)
  3. 学python最好的方式-Python 学习怎样开始比较好?
  4. Linux单网卡多个IP(或者多个网卡多个IP)设置
  5. python pandas加速包
  6. TypeScript Decorators 的使用说明
  7. DAG的深度优先搜索标记
  8. ECTOUCH系统默认模板是有显示销量的,但是销量一直为0,第二种方法OK
  9. 数学第一单元计算机思维导图,四年级下册第一单元思维导图数学
  10. 基于 YOLOV5 的 SAR 图像舰船检测
  11. Moviepy音视频剪辑:视频添加雪花飘落特效
  12. Appium-iOS环境搭建
  13. 华为办公协作与远程视频会议软件Link Now停止运营 请及时备份数据
  14. Linux运维——高级指令
  15. Android6.0 打开自启动管理页面(华为、小米)
  16. 深度学习的hand-crafted和end-to-end的一些概念和区别
  17. qq聊天纪录被删除应该如何恢复
  18. 华为路由及静态路由的配置
  19. java中计算三角形的角度
  20. 2022我们都用这3个3D建模软件,常用简单又易上手

热门文章

  1. 传奇源码分析---框架
  2. 热血传奇服务端源代码分析笔记
  3. 毕业设计论文-基于matlab的车牌识别系统
  4. 【Java】从0开始个人网站建立(一)工程建立到登录与认证-Spring boot、Shiro、Mybatis-Plus、MySql
  5. 上海交大计算机系分数线2019,2019年上海部分高校各专业录取分数线汇总|附2019上海交通大学上海生源情况!...
  6. 准备计算机二级c语言需要多久,计算机二级自学需要准备多久
  7. centOS服务器 netstat命令 查看TCP连接数信息(转)
  8. ActiveMQ 反序列化漏洞 (CVE-2015-5254)复现
  9. 编辑PDF时怎样删除文件中的图片
  10. android dumpsys 分析,Android中dumpsys命令用法简单介绍