字符数组

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);

 

 

更多推荐