字符是C/C++读入数据最主要的类型。本篇将介绍单个字符数组/多个字符串及二维数组的输入输出方式与相关函数。
目录
单个字符串处理
输入
逐个元素输入
在对字符数组进行输入操作时,可以逐个元素进行输入,甚至指定输入某个位置的某个元素。下面将从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++不作为字符读入 ,等待继续输入。
整体串形式输入
看完上面的逐个输入,会觉得这是一种这时一种非常繁琐的方式。如果用逐个读入的方式读入整个字符串,需要使用一个循环才可完成全部输入操作。这里将介绍整体字符串形式输入的方式: