周末总结:数组之字符数组

文章目录

    • 字符数组的定义,初始化及引用
    • 字符数组的输入与输出
    • 常用的字符串处理函数
    • 字符数组简单应用举例

字符数组的定义,初始化及引用

char 数组名【元素数】={元素初值列表};

例如

char a[10]={'G','O','O','D'};

初始化时若元素初值列表给出的字符数小于定义的元素数,则后面自动补ASCII码为零的字符’\0’。
也可去掉定义时的元素数,用元素初值定义,如

char a[]={'g','','o','','o','','d'};

且这种方式定义后面不回家字符’\0’。
谨记:字符数组定义的元素数一定要大于实际使用的有效长度!

引用字符串数组元素,相当于引用一个字符变量,其引用格式为

数组名[下标]

字符串常量是以’\0’结束的内容固定的字符序列。字符数组是元素类型为字符类型的数组,可以用来储存字符串常量,字符串常量和存有’\0’的字符数组统称为字符串。但若字符数组中没有字符串结束符’\0’,不能当做字符串使用,否则可能出错!

字符数组的输入与输出

1.用%c格式的输入与输出

main()
{
	char d[10];
	int i;char c[]={"How are you"};
printf("%s",c);
	for(i=0;i<10;i++)
		scanf("%c",&d[i]);/*必须输入够10个字符,不会自动加结束符'\0'*/
	for(i=0;i<10;i++)
		printf("%c",d[i]);/*若改为printf("%s",d)会出错*/
	printf("\n"); 
 } 

2.用%s整体输入或输出

char c[20];
scanf("%s",c);

注意!scanf()中的空格是多个字符串的分隔符,所以此法输入带空格的字符串给一个数组时,只有第一个空格前的字符串有效,若想输入带空格的字符串,可使用gets输入。

char c[]={"How are you"};
printf("%s",c);

常用的字符串处理函数

1.字符串整行输入函数gets

char str[20];
gets(str);

2.字符串整体输出函数puts

char s[]={"Hello!"}
puts(s);

3.测字符串有效长度函数strlen

char s[20]="12345";
i=strlen(s);

则i=5
4.字符串比较函数strcmp
两个字符串相比,相等则返回0;不相等时,若字符串1的字符较大,则返回正整数,否则返回负整数。

char s[20]="hello!";
printf("%d  %d",strcmp(s,"Hello!"),strcmp("aabc","abc"));

输出结果为32 -1
5.字符串复制函数strcpy
将字符串2包括’\0’全部复制到字符串1中,这就要求字符串1应有足够的长度以便储存字符串2。此函数的返回值是字符数组1的首地址

char s[20];
strcpy(s,"Hello!");
puts(s);

则应输出Hello!
6.字符串连接函数strcat
将字符串2连接到字符串1后面,字符串2可以是字符串常量或字符数组名,而字符数组1只能是字符数组名,且连接时字符数组1中字符串尾的’\0’会被覆盖,这就要求字符串1应有足够的长度以便储存字符串2。此函数的返回值是字符数组1的首地址

char s[20]="I love";
puts(strcat(s," you"));

输出结果为I love you

字符数组简单应用举例

1.将一个字符串前n个字符逆转到字符串尾部
2.二进制相加输出二进制
3.输出最小的字符串

你可能感兴趣的:(C语言)