c语言字符数组初始化的三种方式(1分钟教你c语言数组初始化赋值)

在C语言中没有专门的字符串类型变量来保存一个字符串,需要通过数组和指针的方式来保存或者指向一个字符串。一.字符数组的应用1.字符数组的定义和引用:

一般形式:char 数组标识符[常量表达式]

如:char cArray[5];

2.字符数组的引用:

和其他数据类型一样,也是使用下标的形式,如引用上面数组中的元素。

cArray[0]=’H’;

3.字符数组初始化:

方法一:逐个字符赋给数组中的各元素

如charcArray[5]={‘H’,’e’,’l’,’l’,’o’};

例:使用字符数组输出一个字符串

#include<stdio.h>intmain(){charcArray[5]={‘H’,’e’,’l’,’l’,’o’};int i;for(i=0;i<5;i ){printf(“%c”,cArray[i]);}printf(“\n”);return 0;}

方法二:如果在定义字符数组时进行初始化,可以省略数组长度。

方法三: 利用字符串给字符数组赋初值:

如:char cArray[]={“Hello”};或

char cArray[]=”Hello”;

例:使用二维字符数组输出一个钻石形状

#include<stdio.h>int main(){intiRow,iColumn;charcDiamond[][5]={ {”,”,’*’}, {”,’*’,”,’*’}, {‘*’,”,”,”,’*’}, {”,’*’,”,’*’},{”,”,’*’}};for(iRow=0;iRow<5;iRow ){for(iColumn=0;iColumn<5;iColumn ){printf(“%c”,cDiamond[iRow][iColumn]);}printf(“\n”);}return 0;}4.字符数组的结束标志:

字符串总是以”\0″作为串的结束符,所以用字符串方式赋值比用字符逐个赋值要多占一个字节,多占的字节用于存放字符串结束标志”\0″。

5.字符数组的输入输出

方法一:使用格式符”%c”,对字符逐个输入输出,如:

for(i=0;i<5;i )

{

printf(“%c”,cArray[i]);

}

变量为循环的控制量,在循环中作为数组的下标进行循环输出。

方法二:使用格式符”%s”,如:

charcArray[]=”GoodDay!”;

printf(“%s”,cArray);

使用%s要注意的几点:

1.输出字符不包括结束符\0

2.printf函数中的输出项是字符数组名cArray,而不是数组中的元素名

3.如果数组长度大于字符串实际长度,也只输出到\0为止

4.如果一个字符数组中包含多个\0结束字符,则在遇到第一个\0时输出就结束。

6.字符数组的应用:例:计算字符串中有多少个单词#include<stdio.h>intmain(){charcString[100]; //定义保存字符串的数组intilndex,iWord=1;//iWord表示单词的个数charcBlank;//表示空格gets(cString);//输入字符串if(cString[0]==’\0′)//判断如果字符串为空的情况{printf(“First char just is a blank!\n”); }else if(cString[0]==”)//判断第一个字符为空格{printf(“Firstcharjust is a blank!\n”);}else{ for(ilndex=0;cString[ilndex]!=’\0′;ilndex )//循环判断每一个字符 {cBlank=cString[ilndex];//得到数组中的字符元素if(cBlank==”) //判断是不是空格{ iWord ;} }printf(“%d\n”,iWord);} return 0;}二.字符串处理函数1.字符串复制在字符串处理函数中包含strcpy函数,该函数将复制特定长度的字符串到另一个字符串中。格式如下:strcpy(目的字符数组名,源字符数组名)功能是把源字符数组中的字符串复制到目的字符数组中,字符串结束标志”\0“也一起复制。需注意以下几点:

c语言字符数组初始化的三种方式(1分钟教你c语言数组初始化赋值)

例:

#include<stdio.h>#include<string.h>int main(){ char str1[30],str2[30];printf(“输入目的字符串:\n”);gets(str1);printf(“输入源字符串:\n”);gets(str2); prints(“输出目的字符串:\n”); puts(str1); printf(“输出源字符串:\n”); puts(str2); strcpy(str1,str2); printf(“调用strcpy函数进行字符串拷贝:\n”);printf(“拷贝字符串之后的目的字符串:\n”);puts(str1);return 0;}

2.字符串连接

指将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串,在字符串处理函数中,strcat 函数具有字符串连接功能。如:

strcat(目的字符数组名,源字符数组名)

把源字符数组中的字符串连接到目的字符数组中字符串的后面,并删去目的字符数组中原有的串结束标志”\0″。

例:

#include<stdio.h>#include<string.h>int main(){ char str1[30],str2[30];printf(“输入目的字符串:\n”);gets(str1);printf(“输入源字符串:\n”);gets(str2); printf(“输出目的字符串:\n”); puts(str1);printf(“输出源字符串:\n”);puts(str2);strcat(str1,str2);//调用strcat函数进行字符串连接 printf(“调用strcat函数进行字符串连接:\n”); printf(“字符串连接之后的目的字符串:\n”); puts(str1); return 0;}3.字符串比较

将一个字符串与另一个字符串从首字母开始,按照ASCLL码的顺序进行逐个比较。strcmp函数具有在字符串间进行比较的功能。

strcmp(字符数组名1,字符数组名2)

当两个字符串进行比较时若出现不同的字符,则以第一个不同的字符的比较结果作为整个比较的结果。

例:分别定义4个字符数组,分别用来存储用户名,密码和用户输入的用户名及密码字符串,然后分别调用strcmp函数比较用户输入的用户名和密码是否正确。

#include<stdio.h>#include<string.h>int main(){char user[20]={“mrsoft”};char password[20]={“mrkj”};char ustr[20],pwstr[20];int i=0;while(i<3){printf(“输入用户名字符串:\n”);gets(ustr);printf(“输入密码字符串:\n”);gets(pwstr);if(strcmp(user,ustr)){printf(“用户名字符串输入错误!\n”);}else{ if(strcmp(password,pwstr)) {printf(“密码字符串输入错误!\n”); } else {printf(“欢迎使用!\n”);break; }}i ;}if(i==3){ printf(“输入字符串错误3次!\n”);}return 0;}

4.字符串大小写转换

strupr(字符串)将字符串中的小写字母变成大写字母

strlwr(字符串)将字符串中的大写字母变成小写字母

例:

#include<stdio.h>#include<string.h>int main(){chartext[20],change[20];int num;int i=0;while(1){printf(“输入转换大小写方式(1大写,2小写,0退出):\n”);scanf(“%d”,&num);if(num==1){ printf(“输入一个字符串:\n”);scanf(“%s”,&text);strcpy(change,text);strupr(change); printf(“转换成大写字母的字符串为:%s\n”,change);}else if(num==2){ printf(“输入一个字符串:\n”);scanf(“%s”,&text);strcpy(change,text);strlwr(change);printf(“转换成小写字母的字符串为:%s\n);}elseif(num==0){ break;}}return 0;}

5.获得字符串长度

strlen(字符数组名)

计算字符串的实际长度(不含字符串结束标志”\0″,返回值为字符串实际长度。

例:获取输入字符串的长度,并将输入的两个字符串进行连接,再获取字符串长度。

#include<stdio.h>#include<string.h>int main(){chartext[50],connect[50];int num;printf(“输入一个字符串:\n”);scanf(“%s”,&text);num=strlen(text);printf(“字符串长度为:%d\n”,num);printf(“再输入一个字符串:\n);scanf(“%s”,&connect);num=strlen(connect);printf(“字符串长度为:%d\n”,num);strcat(text,connect);printf(“将两个字符串进行连接:%s\n”,text);num=strlen(text);printf(“连接后的字符串长度为:%d\n”,num);return 0;}

发表评论

登录后才能评论