
第 7 章 数组与字符串
1 第 7 章 数组与字符串

7.2字符数组与字符串、学符数组与字符审字符数组:可以存放若干个字符,也可以存放字符串。字符串:字符串的末尾必须有0'字符,它的ASCII码值为0。7字符数组定义:char数组名[exp];ans[10];如: chars数组是一维字符数组,它可以存放10个字符或一个长度不大于9的字符串。字符串一定是字符数组,但是字符数组不一定是字符串。只有以数值0结尾的字符数组是字符串。Page
Page 2 7.2 字符数组与字符串 一、字符数组与字符串 字符数组: 可以存放若干个字符,也可以存放字符串。 字符串:字符串的末尾必须有’\0’字符,它的ASCII码值为0。 字符数组定义:char 数组名[exp]; 如:char s[10]; s数组是一维字符数组,它可以存放10个字符或一个长度不大于9的字符 串。 c h i n a \0 字符串一定是字符数组,但是字符数组不一定是字符串。 只有以数值0结尾的字符数组是字符串

二、字符数组(字符串)的初始化1逐个元素初始化例如 : char c[10]={'c,"h',‘a,r'};说明:如果初值个数>数组长度,则作语法错误处理;如果初值个数<数组长度,则只将这些字符赋给数组中前面那些元素,其余元素自动定为空字符(即’10”);如果初值个数-数组长度,则在定义时可省略数组长度。h10°P100r00caPageU
Page 3 1.逐个元素初始化。 例如:char c[10] = {'c', ' h', 'a', 'r' }; 说明: ❖如果初值个数>数组长度,则作语法错误处理; ❖如果初值个数<数组长度,则只将这些字符赋给数组中前面那些 元素,其余元素自动定为空字符(即’\0’); ❖如果初值个数=数组长度,则在定义时可省略数组长度。 c h a r '\0' '\0' '\0' '\0' '\0' '\0' 二、字符数组(字符串)的初始化

二、字符数组(字符串)的初始化2.用常字符串来初始化字符数组char a[l1l="Iam a boy""特别注意:常字符串是常量,就像数字一样,不能修改。Page
Page 4 2. 用常字符串来初始化字符数组 char a[11] =“I am a boy” ; 二、字符数组(字符串)的初始化 特别注意: 常字符串是常量,就像数字一样,不能 修改

7.22字符数组(字符串)的引用字符数组与字符串是通过字符数组名来引用的,如下:void mainO[char str1[10],str2[10];int i;for( i=0;i<10; i++ )[str1[i]= getchar(;1for( i=0;i<10;i++ ){str2[i]=str1[i];1for( i=0;i<10;i++ ){putchar( str2[i] );1
Page 5 7.2 .2 字符数组(字符串)的引用 字符数组与字符串是通过字符数组名来引用的,如下: void main(){ char str1[10],str2[10]; int i; for( i=0;i<10; i++ ){ str1[i] = getchar(); } for( i=0;i<10;i++ ){ str2[i]=str1[i]; } for( i=0;i<10;i++ ){ putchar( str2[i] ); } }

7.2.3字符数组(字符串)的输入输出1·用格式符"%c”或者getcharO/putcharO逐个输入/输出一个字符scanf("%c",&a[0D;a[0]=getcharO;printf("%c",a[OD;putchar(a[OD);2:用格式符%s"整个输入/输出字符串char c[10 l;scanf("%s",c);//注意此处用数组名printf("%s",c);/注意此处用数组名注意事项:用"%s”格式输入或输出字符数组时,函数scan的地址项、函数print的输出项都是字符数组名。这时数组名前不能再加“&”符号,因为数组名就是数组的起始地址。用语句"scanf("%s",s);”为字符数组s输入数据时,遇空格键或回车键时结束输入。但所读入的字符串中不包含空格键或回车键,而是在字符串未尾添加0。Page
Page 6 7.2.3 字符数组(字符串)的输入输出 1.用格式符“%c” 或者 getchar()/putchar() 逐个输入/输出 一个字符 scanf("%c",&a[0]); a[0]=getchar(); printf("%c",a[0]); putchar(a[0]); 2.用格式符"%s"整个输入/输出字符串 char c[10 ]; scanf(“%s”,c); //注意此处用数组名 printf("%s",c); //注意此处用数组名 注意事项: ◆ 用“%s”格式输入或输出字符数组时,函数scanf的地址项、函数printf的输出项都 是字符数组名。这时数组名前不能再加“&”符号,因为数组名就是数组的起始地 址。 ◆ 用语句“scanf("%s",s);”为字符数组s输入数据时,遇空格键或回车键时结束输 入。但所读入的字符串中不包含空格键或回车键,而是在字符串末尾添加'\0

7.2.4字符串的使用总结:1.字符串的长度:遍历一个字符数组,如果发现有数值0则就是字符串,并且0的位置就是字符串长度。2.输入字符串的时候,如果字符串中有空格,则系统会自动认为字符串已经结束。也就是说,在英文句子中一次只能输入一个单词,那多个单词怎么输入呢?只能用 getchar()一个一个字符输入,然后判断输入的字符是否是“Enter”,是则输入结束。3.字符串的长度不能超过定义的字符数组长度。否则程序崩溃报错。Page
Page 7 7.2.4 字符串的使用 总结: 1.字符串的长度:遍历一个字符数组,如果发现有数值 0则就是字符串,并且0的位置就是字符串长度。 2.输入字符串的时候,如果字符串中有空格,则系统会 自动认为字符串已经结束。也就是说,在英文句子中 一次只能输入一个单词,那多个单词怎么输入呢?只 能用 getchar() 一个一个字符输入,然后判断输入 的字符是否是 “Enter”,是则输入结束。 3.字符串的长度不能超过定义的字符数组长度。否则程 序崩溃报错

7.2.4字符串的使用举例:1、定义一个字符数组,输入字符,输出字符,在数组中查找某个字符。2、定义一个字符数组并将其作为字符串,输入、输出其每个元素的内容。Page
Page 8 7.2.4 字符串的使用 举例: 1、定义一个字符数组,输入字符,输出字符,在数组 中查找某个字符。 2、定义一个字符数组并将其作为字符串,输入、输出 其每个元素的内容

六、字符串常用处理函数函数是一个提供某种功能的程序段,可以通过名字调用,需要参数,返回结果。puts(str).在显示器上输出str数组中的字符串,输出后自动换行。例如 : charstrll="ChinalnBiejing";Chinaputs(str);Beijing2. gets(str)从键盘读入一个字符串存入str数组中,并且得到一个函数值,该函数值是str数组的首地址。例如 : gets(str);输入为“Howareyou?”!则str中存有整个字符串及10″mainO程序运行情况如下: charc1[20],c2[20];How are you?gets(c1); gets(c2);Fine thank you.?puts(cl); puts(c2);How are you??Fine thank you.Page
Page 9 ◆ 函数是一个提供某种功能的程序段,可以通过名字调用,需要参数,返回 结果。 1. puts(str) 在显示器上输出str数组中的字符串,输出后自动换行。 例如:char str[ ]="China\nBiejing"; puts(str); 2. gets(str) 从键盘读入一个字符串存入str数组中,并且得到一个函数值,该函数值是 str数组的首地址。 例如: gets(str); 输入为“How are you?” 则str中存有整个字符串及‘\0’。 main( ) { char c1[20],c2[20]; gets(c1); gets(c2); puts(c1); puts(c2); } China Beijing 程序运行情况如下: How are you? Fine thank you. How are you? Fine thank you. 六、字符串常用处理函数

六、字符串常用处理函数3.strcat(字符数组1,字符数组2)连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在一一字符数组1的地址。学符串学符患1中,函数调用后得到一个函数值例如 : char str1[30]={"People's Republic of "]:str2[ ]={"China"};printf("%s", strcat(str1,str2):输出 : People s Republic of China字符数组1必须足够大,以便容纳连接后的新字符串。连接前两个字符串后面都有一个"0,连接时将紧跟字符串1后面的"10取消,只在新串最后保留一个"0。10Page
Page 10 3. strcat(字符数组1,字符数组2) 连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在 字符串字符串1中,函数调用后得到一个函数值——字符数组1的地址。 例如: char str1[30]={"People's Republic of "}; str2[ ]={"China"}; printf("%s", strcat(str1,str2)); 输出: People's Republic of China 字符数组1必须足够大,以便容纳连接后的新字符串。 连接前两个字符串后面都有一个'\0',连接时将紧跟字符串1后面的'\0' 取消,只在新串最后保留一个'\0' 。 六、字符串常用处理函数