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
int main()
{
char a[] = {97, 98, 99};
int i = 0;
for(i=0; i
常见的字符串是用双引号将一些字符括起来;
但是,C语言中是没有字符串这种数据类型的,只能通过字符数组来模拟字符串
我们常常见到的字符串,仅仅是个字面量,只能当做常量来使用
#define KJ "helloworld"
printf("%s\n", KJ);
printf("%s\n", "helloworld");
那字符串变量在印象中好像是存在的有下面的程序可以“证明”
程序实例2:
#include
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,在数组中是一个元素,但是表示字符串的时候就表示结束符。
所以可以这么理解,字符数组如果没有\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
#include
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
#include
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
#include
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;
}