一维数组二维数组字符数组程序举例一维字符数组、二维字符数组的定义、引用、初始化与其他类型的一维、二维数组相同。一维字符数组用于存储一个字符串。二维字符数组用于存储多个字符串,一行存储一个字符串。字符串常量是用一对双引号括起来的字符序列,结束符是\0。字符串是一个特殊的一维字符数组。对字符数组的操作和其他数组的操作有何不同?通常用\0控制循环条件(1)逐个地为数组各元素赋初值charstr[10]={M,i,c,r,o,s,o,f,t,\0};计算字符串长度时,不会将\0计算在内。定义字符数组时,数组长度=字符串的有效长度+1。(2)用字符串常量给数组赋初值charstr[10]={Microsoft};等价形式:charstr[10]=Microsoft; charstr[]={Microsoft};charstr[]={M,i,c,r,o,s,o,f,t,\0};Microsoft\0存储charch[4][10]={student,worker,scientist,soldier};ch[0]student\0??ch[1]worker\0???ch[2]scientist\0ch[3]soldier\0??字符输入函数getchar(),scanf()用%c字符输出函数putchar(),printf()用%c1.逐个字符地输入和输出charstr[10];for(i=0;i9;i++)scanf(%c,str[i]);str[i]=\0;for(i=0;i9;i++)printf(%c,str[i]);charstr[10];for(i=0;i9;i++)str[i]=getchar();str[i]=\0;for(i=0;i9;i++)putchar(str[i]);字符串输入函数gets(str),scanf()用%s字符串输出函数puts(str),printf()用%s2.字符串整体输入和输出charstr[10];scanf(%s,str);printf(%s,str);charstr[10];gets(str);puts(str);gets(str)函数接收从键盘输入的一个字符串(可含空格)到字符数组str中,遇换行符结束输入。自动将\0置于串尾代替换行符。scanf()函数接收的字符串中不能有空格符,空格符和回车符都作为输入数据的分隔符。#includestdio.hintmain(void){charstr[20];printf(Enterastring:);gets(str);printf(%s\n,str);scanf(%s,str);printf(%s,str);return(0);}【例4-9】分别用gets()和scanf()函数输入带空格字符串。程序运行实例:Happynewyear!↙Happynewyear!Happynewyear!↙Happy字符串合并函数strcat(str1,str2)字符串比较函数strcmp(str1,str2)字符串复制函数strcpy(str1,str2)求字符串长度函数strlen(str)字符串小写函数strlwr(str)字符串大写函数strupr(str)其中,str,str1,str2均为一维字符数组名。#includestring.hintmain(void){charstr1[20]=Happy;charstr2[]=NewYear!;strcat(str1,str2);printf(\n%s,str1);}程序运行结果【例4.12】不使用函数strcat(),将字符串Happy和字符串NewYear!合并为一个字符串。算法步骤:intk=0,j=0;while(str1[k])k++;2.将第2个串中的字符依次放到第1个串的后面。找到第1个串的末尾(\0)while(str2[j])str1[k++]=str2[j++];