字符数组就是char数组,当维度是一维是可以当做“字符串”,当维度是二维时可以当成是字符串数组,即若干字符串。字符数组的输入除了使用scanf外,还可以使用getchar或者gets;其输出除了使用printf外,还可以使用putchar或者puts。

(1)scanf输入,printf输出

scanf对字符串的输入有%s和%c两种格式。%c格式用来输入单个字符,它能够识别空格和换行符并将其保存到字符数组中;%s格式用来输入一个字符串,它通过空格和换行来识别一个字符串的结束。也就是说使用%s格式输入并保存到字符数组中的字符串是不含空格的。下面是一个实例:

  1. #include <stdio.h>
  2. int main(){
  3. char str[10];
  4. scanf("%s", str);
  5. printf("%s", str);
  6. return 0;
  7. }

输入字符串“abc def ghi”,输出的结果为“abc”。可以看到,%s识别空格作为字符串的结尾,因此第一个空格后面的字符都不会被读入。

(2)getchar输入,putchar输出

getchar和putchar分别用来输入和输出单个字符。getchar可以识别换行符和空格并将其保存。下面是一个例子:

  1. #include <stdio.h>
  2. int main(){
  3. char c1, c2, c3;
  4. c1 = getchar();
  5. c2 = getchar();
  6. c3 = getchar();
  7. putchar(c1);
  8. putchar(c2);
  9. putchar(c3);
  10. return 0;
  11. }

在这里我们如果输入“a“,然后敲回车,然后输入”bc“,再敲回车,输出的结果会是这样:

a

b

这是由于getchar可以识别换行符,所以c2实际上存储的是换行符,因此字符c没有被存入,字符ab之间会有一个换行出现。

(3)gets输入,puts输出

gets用来输入一行字符串并将其存放于一维数组(或二维数组的一维)中,读取字符串直到换行符结束,但换行符会被丢弃,然后再末尾添加‘\0’,它与scanf(”%s“, s)相似,但不完全相同,gets可识别空格并将其输入。puts函数会自动换行。下面是一个例子:

  1. #include <stdio.h>
  2. int main(){
  3. char str1[20];
  4. char str2[5][10];
  5. gets(str1);
  6. for(int i = 0; i < 3; i ++){
  7. gets(str2[i]);
  8. }
  9. puts(str1);
  10. for(int i = 0; i < 3; i ++){
  11. puts(str2[i]);
  12. }
  13. return 0;
  14. }

输入 下面几个字符串:

abc def

QAQ

T_T

WoAiNi

这几个字符串都可以原样输出,因为gets可以识别空格并将其保存到字符串中。另外需要注意的是,gets函数会无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读取操作时不会发生溢出。如果溢出,多出来的字符会被写入到堆栈中,这就覆盖了堆栈原有的内容,破坏一个或多个不相关变量的值。

C语言字符数组的输入输出处理相关推荐

  1. C语言字符数组的输入输出

    可以在初始定义字符数组时进行赋值,例如char c[]={"China"}; 或者用strcpy函数 例如char c[20]; strcpy(c,"China" ...

  2. C语言 | 字符数组

    C语言字符数组的定义 字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似. //例子:char character[10]; C语言字符数 ...

  3. strcmp可以比较数组么_6.3 C语言字符数组

    01字符数组的定义 1.用来存放字符数据的数组是字符数组.字符数组中的一个元素存放一个字符. 2.定义字符数组的方法和定义数值型数组的方法类似. 例子: char c[10]; 02 字符数组的初始化 ...

  4. C语言字符数组的输入和输出

    字符数组的输入输出有两种方法: (1)逐个字符输入输出.用格式符"%c"输入或输出一个字符.例如 int main() {char c[6]; //定义一个字符串for (int ...

  5. C/C++ | C语言字符数组初始化,有些赋值方式千万注意

    一.字符数组的定义和初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. charstr[10]={'I','','a','m','','h','a','p','p','y'}; ...

  6. C语言 字符数组 和 字符串 详解

    C语言 字符数组 和 字符串 详解 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ...

  7. C语言字符数组越界问题

    C语言字符数组踩坑 如果运行下面的代码会发生输出什么? #include<stdio.h> #include<string.h>/*** 输出结果* a1:wohello* a ...

  8. c语言字符数组赋值超过,C语言字符数组赋值

    C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...

  9. python定义字符串数组初始化_字符数组及其定义和初始化,C语言字符数组详解...

    字符数组及其定义和初始化,C语言字符数组详解 字符串的存储方式有字符数组和字符指针,我们先来看看字符数组. 因为字符串是由多个字符组成的序列,所以要想存储一个字符串,可以先把它拆成一个个字符,然后分别 ...

最新文章

  1. java中关键字volatile的作用(转载)
  2. 针对maven install 报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1 解决方案...
  3. Spring Framework Reference Documentation手册官网下载地址
  4. boost::describe模块实现overloaded的测试程序
  5. mysql 冷热表_Redis+MySQL冷热数据交换
  6. css资源网站收集推荐
  7. WIN7开启WIFI
  8. MATLAB 数学应用 微分方程 常微分方程 求解捕食者-猎物方程
  9. Image data cannot be converted to float
  10. 哔哩哔哩mac电脑版上线,来聊聊B站Mac版客户端初体验
  11. 计算机与电气工程sci期刊,电气工程专业什么SCI期刊比较好
  12. Python 判断无向图是否存在环
  13. Win10系统QQ无法登陆,代码00001
  14. php实现视频转gif,一种在线视频转GIF的方法与流程
  15. 通道结构体_超账结构中系统通道和应用程序通道上的配置更新
  16. 5G新型网络架构关键技术 — 无线mesh与动态自组网络和无线资源调度与共享
  17. 2021年,用更现代的方法使用PGP(下)
  18. js获取input输入框的值
  19. ESP8266EX 串口WIFI无线模块
  20. 《炬丰科技-半导体工艺》 超临界二氧化碳清洗晶圆工艺

热门文章

  1. (最优化理论与方法)第一章最优化简介-第三节:最优化基本概念
  2. 语音及多模态语音数据集总结
  3. 机器学习之密度聚类及代码示例
  4. 利用ESP32可以实现哪些有趣的功能?
  5. Hadoop面试题汇总-20221031
  6. XeLaTeX: 支持现代字体 LaTeX 编译器
  7. 【数据库系列】如何查看MongoDB版本信息
  8. 统计学--基于R(第3版)(基于R应用的统计学丛书)作者:贾俊平 习题答案 第十一章
  9. 数据结构-串、数组、广义表
  10. 【数理统计】学习笔记05:区间估计