C语言学习:12、字符数组与字符串

一、字符类型

char 类型的变量占一个字节的内存,取值范围-128至127;

char类型可以理解为单字节的整型;

char类型的变量可以这样赋值和初始化

char a = 97;

char b = 'a';

二、字符数组

字符数组本质上就是单字节的整数集合,所以字符型数组也就可以这样赋值和初始化

char a[] = {97, 98, 99};

char b[] = {'h', 'e', 'l', 'l', 'o'};

程序实例1:

#include <stdio.h>

int main()
{
	char a[] = {97, 98, 99};
	int i = 0;
	
	for(i=0; i<sizeof(a);i++)
	{
		printf("%d\n", a[i]); //按照整型输出
	}
	
	for(i=0; i<sizeof(a);i++)
	{
		printf("%c\n", a[i]); //按照字符型输出
	}
}

三、字符串的事实

常见的字符串是用双引号将一些字符括起来;

但是,C语言中是没有字符串这种数据类型的,只能通过字符数组来模拟字符串

我们常常见到的字符串,仅仅是个字面量,只能当做常量来使用

#define KJ    "helloworld"
printf("%s\n", KJ);
printf("%s\n", "helloworld");

那字符串变量在印象中好像是存在的有下面的程序可以“证明”

程序实例2:

#include <stdio.h>

int main()
{
	char arr[] = {'h','e','l','l','o','\0'};

	char arr1[] = "hello";

	printf("%s\n", arr);

	printf("sizeof(arr1) = %d\n", sizeof(arr1)); //数组arr1的大小应该为6,有一个隐形的\0
	printf("%s\n", arr1);
	return 0;
}

其实所谓的字符串变量本质就是字符数组,字符数组中的0元素表示一个字符串的结束,字符数组中的元素,不一定是字符串中的元素。如程序实例2中所示,arr数组中一共有6个元素,但是是表示的字符串只有5个字符,应为那个\0,在数组中是一个元素,但是表示字符串的时候就表示结束符。

扫描二维码关注公众号,回复: 16971794 查看本文章

所以可以这么理解,字符数组如果没有\0元素,那就仅仅是一个字符数组,如果字符数组里面有\0元素,那么这个字符数组也可以表示字符串。

四、字符串的运算操作

C语言没有针对字符串的直接运算操作,这个没有直接式重点,那就是说有间接的运算操作了,需要增加另外一个工具包,前面我们一直在使用stdio.h这个工具包,这次再接触一个string.h工具包,就是为字符串的操作服务的。

常用的字符串工具如下:

strlen(s);//获取字符串s的长度

strcpy(s1, s2);//将s2中的字符复制到s1

strcat(s1, s2);//将s2追加到s1后面

strcmp(s1, s2);//比较s1和s2是否相等,相等时返回结果0

程序实例3:获取字符串的长度

#include <stdio.h>
#include <string.h>

int main()
{
	char arr[10] = "hello";

	int size = sizeof(arr); //获取arr数组的大小,数组大小已经定义好了,就是10

	int len = strlen(arr); //获取arr字符串的长度,字符串的长度是5,只有5个字符


	printf("size = %d\n", size);

	printf("len = %d\n", len);

	return 0;
}

输出结果:

size = 10
len = 5

程序实例4:字符串复制

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[10] = "hello";

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	strcpy(s1, s2);
	len = strlen(s1);
	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	return 0;
}

输出结果:

s1 = hello
len = 5
s1 = world!
len = 6

程序示例5:字符串拼接

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[20] = "hello"; //这个数组空间要搞大一些,不然拼接的字符串放不下

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	strcat(s1, s2);
	len = strlen(s1);
	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	return 0;
}

输出结果:

s1 = hello
len = 5
s1 = helloworld!
len = 11

程序实例6:字符串比较

int main()
{
	char s1[20] = "hello";

	char s2[] = "world!";

	int len = strlen(s1); //获取arr字符串的长度

	printf("s1 = %s\n", s1);
	printf("len = %d\n", len);

	if (strcmp(s1, s2) == 0)
	{
		printf("两个字符串相等\n");
	}
	else
	{
		printf("两个字符串不相等\n");
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_49968063/article/details/132938956