C语言字符数组的输入输出处理
字符数组就是char数组,当维度是一维是可以当做“字符串”,当维度是二维时可以当成是字符串数组,即若干字符串。字符数组的输入除了使用scanf外,还可以使用getchar或者gets;其输出除了使用printf外,还可以使用putchar或者puts。
(1)scanf输入,printf输出
scanf对字符串的输入有%s和%c两种格式。%c格式用来输入单个字符,它能够识别空格和换行符并将其保存到字符数组中;%s格式用来输入一个字符串,它通过空格和换行来识别一个字符串的结束。也就是说使用%s格式输入并保存到字符数组中的字符串是不含空格的。下面是一个实例:
- #include <stdio.h>
- int main(){
- char str[10];
- scanf("%s", str);
- printf("%s", str);
- return 0;
- }
输入字符串“abc def ghi”,输出的结果为“abc”。可以看到,%s识别空格作为字符串的结尾,因此第一个空格后面的字符都不会被读入。
(2)getchar输入,putchar输出
getchar和putchar分别用来输入和输出单个字符。getchar可以识别换行符和空格并将其保存。下面是一个例子:
- #include <stdio.h>
- int main(){
- char c1, c2, c3;
- c1 = getchar();
- c2 = getchar();
- c3 = getchar();
- putchar(c1);
- putchar(c2);
- putchar(c3);
- return 0;
- }
在这里我们如果输入“a“,然后敲回车,然后输入”bc“,再敲回车,输出的结果会是这样:
a
b
这是由于getchar可以识别换行符,所以c2实际上存储的是换行符,因此字符c没有被存入,字符ab之间会有一个换行出现。
(3)gets输入,puts输出
gets用来输入一行字符串并将其存放于一维数组(或二维数组的一维)中,读取字符串直到换行符结束,但换行符会被丢弃,然后再末尾添加‘\0’,它与scanf(”%s“, s)相似,但不完全相同,gets可识别空格并将其输入。puts函数会自动换行。下面是一个例子:
- #include <stdio.h>
- int main(){
- char str1[20];
- char str2[5][10];
- gets(str1);
- for(int i = 0; i < 3; i ++){
- gets(str2[i]);
- }
- puts(str1);
- for(int i = 0; i < 3; i ++){
- puts(str2[i]);
- }
- return 0;
- }
输入 下面几个字符串:
abc def
QAQ
T_T
WoAiNi
这几个字符串都可以原样输出,因为gets可以识别空格并将其保存到字符串中。另外需要注意的是,gets函数会无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读取操作时不会发生溢出。如果溢出,多出来的字符会被写入到堆栈中,这就覆盖了堆栈原有的内容,破坏一个或多个不相关变量的值。
C语言字符数组的输入输出处理相关推荐
- C语言字符数组的输入输出
可以在初始定义字符数组时进行赋值,例如char c[]={"China"}; 或者用strcpy函数 例如char c[20]; strcpy(c,"China" ...
- C语言 | 字符数组
C语言字符数组的定义 字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似. //例子:char character[10]; C语言字符数 ...
- strcmp可以比较数组么_6.3 C语言字符数组
01字符数组的定义 1.用来存放字符数据的数组是字符数组.字符数组中的一个元素存放一个字符. 2.定义字符数组的方法和定义数值型数组的方法类似. 例子: char c[10]; 02 字符数组的初始化 ...
- C语言字符数组的输入和输出
字符数组的输入输出有两种方法: (1)逐个字符输入输出.用格式符"%c"输入或输出一个字符.例如 int main() {char c[6]; //定义一个字符串for (int ...
- C/C++ | C语言字符数组初始化,有些赋值方式千万注意
一.字符数组的定义和初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. charstr[10]={'I','','a','m','','h','a','p','p','y'}; ...
- C语言 字符数组 和 字符串 详解
C语言 字符数组 和 字符串 详解 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ...
- C语言字符数组越界问题
C语言字符数组踩坑 如果运行下面的代码会发生输出什么? #include<stdio.h> #include<string.h>/*** 输出结果* a1:wohello* a ...
- c语言字符数组赋值超过,C语言字符数组赋值
C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...
- python定义字符串数组初始化_字符数组及其定义和初始化,C语言字符数组详解...
字符数组及其定义和初始化,C语言字符数组详解 字符串的存储方式有字符数组和字符指针,我们先来看看字符数组. 因为字符串是由多个字符组成的序列,所以要想存储一个字符串,可以先把它拆成一个个字符,然后分别 ...
最新文章
- java中关键字volatile的作用(转载)
- 针对maven install 报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1 解决方案...
- Spring Framework Reference Documentation手册官网下载地址
- boost::describe模块实现overloaded的测试程序
- mysql 冷热表_Redis+MySQL冷热数据交换
- css资源网站收集推荐
- WIN7开启WIFI
- MATLAB 数学应用 微分方程 常微分方程 求解捕食者-猎物方程
- Image data cannot be converted to float
- 哔哩哔哩mac电脑版上线,来聊聊B站Mac版客户端初体验
- 计算机与电气工程sci期刊,电气工程专业什么SCI期刊比较好
- Python 判断无向图是否存在环
- Win10系统QQ无法登陆,代码00001
- php实现视频转gif,一种在线视频转GIF的方法与流程
- 通道结构体_超账结构中系统通道和应用程序通道上的配置更新
- 5G新型网络架构关键技术 — 无线mesh与动态自组网络和无线资源调度与共享
- 2021年,用更现代的方法使用PGP(下)
- js获取input输入框的值
- ESP8266EX 串口WIFI无线模块
- 《炬丰科技-半导体工艺》 超临界二氧化碳清洗晶圆工艺