C/C++字符数组操作全解析
字符数组
1、用字符常数初始化数组 例: char c[8]={‘c’, ‘h’, ‘i’, ‘n’, ‘a’};
--若字符个数<数组长度, 则将这些字符赋给前面的元素, 其余元素自动为空字符(‘\0’)。
存储形式:
c[0]
c[1]
c[2]
c[3]
c[4]
c[5]
c[6]
c[7]
‘c’
‘h’
‘i’
‘n’
‘a’
‘\0’
‘\0’
‘\0’
字符数组初始化
格式:
char a[ ]=“china” char a[6]=“china” char a[ ]={“china”} char a[6]={'c','h','i','n','a'}注意:求字符数组中字符元素(china)个数,与实际存储元素(china\0)个数不一致,因为C语言中所有字符串都是以'\0'结束
因此当我们输入char a[5]="china"数组a内部的元素就会变得不可控了
int main(){ char a[5]="china"; printf("%s",a); }运行结果:
字符串长度
在整形数组中,我们求a[]数组元素个数可以用
sizeof (a)/sizeof (a[0])但是字符数组不行,这就是由于C语言中,当我们将字符串存入数组时,会自动在最后一个元素添加一个‘字符\0’
#include <stdio.h> #include "string.h" int main() { setbuf(stdout,NULL); char a[]={"abcd"}; int n; for (int i = 0; a[i]!='\0' ; ++i) { n++; } printf("字符串长%d\n",n);//————>4 printf("字符串长%d\n",strlen(a));//————>4 printf("字符数组长度%d",sizeof (a)/sizeof (a[0]));//————>5 return 0; }
字符串输入和输出函数
一、输入
gets(字符数组名);--作用: 将输入的字符串赋给字符数组。输入时, 遇第一个回车符结束输入
--gets( )函数同scanf( )函数一样, 在读入一个字符串后, 系统自动在字符串后加上一个字符串结束标志’\0’。
--函数gets( )能读取一行的输入。
gets(arr)=scanf("%s",arr)二、输出
puts(字符数组名); 或 puts(字符串);--作用: 输出字符数组的值, 遇’\0’结束输出。
--注意: puts( )一次只能输出一个字符串。输出字符串后自动换行。可以输出转义字符。
--printf( )函数可以同时输出多个字符串, 并且能灵活控制是否换行, 所以printf( )函数比puts( )函数更为常用
puts(arr);=printf("%s",arr); puts("请输入以串字符串")=printf("请输入一串字符串\n")
字符串处理函数
一、字符串拷贝函数
strcpy( 字符数组1, 字符串2 );--作用: 将字符串2,拷贝到字符数组1中。只复制第一个’\0’前的内容(含’\0’)。
二、字符串拼接函数
strcat( 字符数组1, 字符数组2 );--作用: 拼接两个字符数组中的字符串, 将字符串2连接到——>字符数组1的后面, 结果放在字符数组1中。
三、测字符串长度函数
strlen(字符串) ;--作用: 测试从某个地址开始,截止到第一个\0,中间内存中字符的个数, 不包括结束符‘\0’。
四、字符串比较函数
strcmp( 字符串1, 字符串2 );比较每一元素ASCII码值
printf(“%d\n”,strcmp(“b”, “b”))————>相等:0 printf(“%d\n”,strcmp(“a”, “b”))————>后面大:-1 printf(“%d\n”,strcmp(“b”, “a”))————>前面大:1五、字符串处理函数
strlwr(字符数组名);-- 作用: 将字符数组中大写字母转换成小写字母
strupr(字符数组名);--作用: 将字符数组中小写字母转换成大写字母
六、判断是否是数字
#include <ctype.h> isdigit(a);七、判断是否是字母
#include <ctype.h> isalpha(a);
更多推荐




所有评论(0)