1 / 15
文档名称:

计算机程序设计(C++)C++之字符数组和字符串.doc

格式:doc   大小:79KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机程序设计(C++)C++之字符数组和字符串.doc

上传人:jllzaxwb 2016/9/5 文件大小:79 KB

下载得到文件列表

计算机程序设计(C++)C++之字符数组和字符串.doc

相关文档

文档介绍

文档介绍:C++之字符数组和字符串字符数组的初始化字符串的输入输出综合举例字符数组和字符串的概念字符数组是元素类型为字符的数组,它既具有普通数组的一般性质,又具有某些特殊性质。字符串常量是用双引号包围的字符序列。存储字符串常量时,系统会在字符序列后自动加上'\0',标志字符串的结束。字符串的长度定义为字符串中的有效字符数,不包括结束标志'\0'和双引号。字符串变量是以'\0'作为结束标志的字符数组。字符串变量用于存储和处理字符串常量。在书中统称为字符串的,既可能是字符串常量也可能是存储了字符串常量的字符串变量,即特殊的字符数组。字符数组有两种用法:一是当作字符的数组来使用。这时的用法与整数的数组、实数的数组等相同,对字符数组的输入、输出、赋值、引用等都是针对单个的元素进行。二是更为重要的用法即存储、处理字符串。这时它除了可以像普通数组一样使用外,还可以把字符串作为一个整体进行操作。(1)用字符对字符数组初始化这时把字符数组当作普通数组看待,产生的数组不会有结束符'\0'。当数据量很大时,使用这种方法的工作量是繁重的。例:charrat[5]={'H','E','L','L','O'};(2)用字符串常量对字符数组初始化,这时把字符数组当作字符串变量看待。例:charpanic[6]={"HELLO");这时存放在数组panic中的字符除了H,E,L,L,O之外还有结束标志'\0',因此与下面的初始化等价:charpanic[6]={'H','E','L','L','O'};注意:第二个说明语句中有6个字符,因此字符数组panic的长度是6,而字符串"HELLO"的长度却是5,不把'\0'计算在内。C语言也允许在用字符串初始化时省略花括号。charpanic[]="HELLO";如果在说明语句中指定了数组的长度,那么其大小不得小于初始化字符串的长度。多余的元素位置被系统自动初始化为0。实际上'\0'就是ASCII码为0的字符,因此'\0'和整数0是一回事。例:charposia[11]="string";下面的初始化却是错误的:charneg[5]="doublearrow";3)字符数组两种不同用法举例在前面已经说明,。例:字符数组用法示例之一,当作普通数组。#include<>#defineSIZE10main(){charary1[SIZE]={'P','L','O','T'};charary2[SIZE];charch;inti,j;for(i=0;i<4;i++)printf("%c",ary1[i]);printf("\n请输入一行字符\n");for(i=0;i<SIZE;i++){scanf("%c",&ch);if(ch=='\n')break;ary2[i]=ch;}printf("\n");for(j=0;j<i;j++)printf("%c",ary2[j]);}程序中为了处理数组使用了循环,并且使用了ch,i,j等工作变量,增加了程序的负担,而且又缺乏灵活性,故这种方法很少使用。与下面完成同样功能的程序相比,本程序复杂多了。例:字符数组用法之二,当作字符串。#include<>#defineSIZE10main(){charary1[SIZE]="PLOT";charary2[SIZE];printf("%s\n",ary1);printf("请输入一行字符:\n");scanf("%s",ary2);printf("输入字符串是:\n");printf("%s",ary2);}程序没有用循环,只是直接调用scanf和printf函数完成输入输出。程序之所以能够自动识别出字符串有几个字符,是因此规定了字符串必须以'\0'作为结束,像printf之类的函数输出字符串时一边检测一边输出,一旦碰到'\0',便认为字符串已经结束,之后就停止工作。这样一来'\0'对整个字符串来说至关重要了。一旦由于某种原因字符串的'\0'被改为别的值,字符串就无法终止,printf函数就不能正常工作了。请注意printf和scanf函数处理字符串数组的特点。直接使用数组名作为参数。例:printf("%s\n",ary1);这种直接使用数组名的用法表示把字符串数组当作一个统一整体来处理,只适用于字符串,对别的类型的数组是不能这样用的。%af函数可以进行字符串的输入。在使用中要注意两个问题:一是scanf函数读入的字符串开始于第一个非空白符,包括下一个空白符('\n','\t','')之前的所有字符,最后自动加上‘\0'。例:charstr[10];scanf(