X606C语言程序设计专项部分05
字符串的特点和存储细节
/*
* 字符串的特点
* 1.都是以\0结尾的
* 2.可以用数组和双引号定义字符串
* 3.字符串的本质就是数组,所以在遍历的时候需要循环输出
*/
// 2.1.利用数组定义字符串
char strs1[] = {'a','b','a','b','a','b','a','\0'};
// 2.2.利用双引号定义字符串
char strs2[] = "abababa";
/*
* C语言就会在底层把strs2转换成strs1
*/
/*
* 判断strs3是否为字符串
* 是字符串,因为数组部分初始化后未赋值的赋默认值0
* 又由于'\0'的ASCII码只就是0
* 所以strs3是字符串
*/
char strs3[4] = {'a','b','c'};
// 3.1.for循环遍历strs1
int len = sizeof(strs1) / sizeof(strs1[0]);
for (int i = 0; i < len; ++i) {
// printf("%c ",strs1[i]); // a b a b a b a
// for循环在输出字符串的时候,如果是大括号的形式,会打印\0成一个空括号
}
// 3.2.while循环打印输出strs1
int index = 0;
while (strs1[index] != '\0') {
// printf("%c ",strs1[index]); // a b a b a b a
/*
* 如果使用while循环打印数组而非字符串
* 会出现脏读现象
*/
index++;
}
// 3.3.占位符输出字符串
printf("%s ",strs1);
计算字符串的长度
下面是自己写的计算长度的方法和string.h函数的方法
计算字符串的长度字符串相关操作
/*
* 拼接字符串
* 会将第2个字符串拼接到第1个字符串后面
* 必须保证第1个字符串容量足够
* 否则拼接失败
*/
strcat(strs1,strs2);
printf("%s",strs1); // abababaabababa
/*
* 拷贝字符串
* strs1拷贝strs2字符串
* 并将strs2的字符串覆盖掉strs1的字符串
* 必须保证第1个参数容量足够
* 否则会出现数据混乱
*/
strcpy(strs1,strs2);
printf("%s",strs1);
/*
* 比较字符串
* 第1个参数等于第2个参数,返回0
* 第1个参数大于第2个参数,返回-1
* 第1个参数小于第2个参数,返回1
*/
int res = strcmp(strs1,strs2);
printf("%i",res); // 0