Bootstrap

C/C++字符数组的输入输出方式详解(自行复习用)

字符是C/C++读入数据最主要的类型。本篇将介绍单个字符数组/多个字符串及二维数组的输入输出方式与相关函数。

目录

单个字符串处理

​编辑

输入

逐个元素输入

整体串形式输入

输出

逐个输出

整体串形式输出

任一元素开始串形式输出

多个字符串处理

输入

gets_s(VS)

gets(Dev C++)

fgets(VS / Dev C++)

二维数组的输入输出


单个字符串处理

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZOI6YeM5pavSGVucnk=,size_20,color_FFFFFF,t_70,g_se,x_16

输入

逐个元素输入

在对字符数组进行输入操作时,可以逐个元素进行输入,甚至指定输入某个位置的某个元素。下面将从C和C++两种方式进行介绍:

C语言:scanf ( "%c", &数组元素 )

C++:cin>>数组元素

当然这就是最简单的输入方法,我们可以从下面两段代码理解:

/* C++基本实现 */
char s[20];
cin >> s[3] >> s[6];   //输入 Tj
cout << s[3] << s[6];  //输出 Tj

/* C语言基本实现 */
char v[20];
scanf("%c%c",&v[3],&v[6]);   //输入Sp
printf("%c%c",v[3],v[6]);  //输出Sp

scanf在使用时,需要加上取地址符 &,因为scanf规定后面必须是变量的地址。

那么我们再来讨论一下非正常输入的情况。在上段代码中那,要求输入两个字符,但是输入三个字符会怎么样呢?其实这和 cin 输入的普通处理相同,多余的数据会被存放在缓冲区中,而真正起作用的就是输入的前两个参数。

但是如果输入了呢?这里就有一个需要引起注意的地方。先看一段代码:

/* CASE 1: C++ */
char s[20];
cin >> s[2] >> s[3] >> s[4];
cout << int(s[2]) << ' ' << int(s[3]) << ' ' << int(s[4]) << endl;
//这时如果只输入两个字符,然后按回车(一个或多个),光标会一直跳动等待输入

/* CASE 2: C */
char s[20];
scanf("%c%c%c",&s[2],&s[3],&s[4]);
cout << int(s[2]) << ' ' << int(s[3]) << ' ' << int(s[4]) << endl;
//这时表现就和上面不同了
//如输入 ab ,按回车后不再等待,而第三位输出的是回车的ascii码

可以用一句话总结一下以上规律:多次逐个输入时,C处理回车的方式时当作字符读入,而C++不作为字符读入 ,等待继续输入。

整体串形式输入

看完上面的逐个输入,会觉得这是一种这时一种非常繁琐的方式。如果用逐个读入的方式读入整个字符串,需要使用一个循环才可完成全部输入操作。这里将介绍整体字符串形式输入的方式:

;