以前在学习Java的时候开始就会学习定义字符串,但是在c语言中这个是比较靠后,但是在Java中后期学的字符串的内容还是比较的繁琐的;
经过一段时间的学习,不能很好的抓住学习的重点,从字符串这一节之后就是跟着B站的一位老师学习,但时候书上面的就是当做一个补充和巩固的内容
1.字符数组
字符数组就是存放char类型的数组
1.字符数组的定义
char 数组名[数组容量];
一般情况下,定义数组之后只能对数组里面的每一个数组逐一进行修改,原因是为了提高程序的可维护性
案例1:这个程序就是熟悉一下字符数组的定义修改内容
char array_ch[4];
array_ch[0] = 'x';
array_ch[1] = 'c';
array_ch[2] = 'z';
array_ch[3] = 's';
for (int i = 0; i < 4; ++i) {
printf("%c\t", array_ch[i]);
}
return 0;
注意
1.引号必须是单引号
2.char 后面在c语言中居然不支持中文
案例2:放置有顺序的数据
char array_ch [26];
for (int i = 0; i < 26; ++i) {
array_ch[i] = 'a' + i;
}
for (int i = 0; i < 26; ++i) {
printf("%c\t", array_ch[i]);
}
return 0;
这个倒是非常的简单
2.字符数组的初始化
1.初始化所有的元素:在定义的时候就是可以给所有的元素赋值
char array_ch [3] = {'x','c','w'}; char array_ch1 [4] = {'z','s','y','g'};
2.初始化部分元素:这个是只是给数组的前面一部分进行赋值
char array_ch [3] = {'x',}; char array_ch1 [4] = {'z','s'};
3.不指定数组容量:在不指定数组的容量的时候,今后初始化赋值之后就会默认的给出赋值的个数为标准
char array_ch [] = {'x','c','w'}; char array_ch1 [] = {'z','s','y','g'};
定义字符数组必须初始化数组;
3.二维字符数组
感觉同上面的二维数组就是将数字换成了字符,这里不再过多的进行描述了
2.字符串类型
1.字符串常量
在C语言中字符串数据就是包含在一堆=对“”中字符的集合
比如:
"xiao cheng zui shuai !";
"xiao cheng zui li hai !";
"hello world\n";
上面的两个都是字符串的常量,字符串在
上面的hello world就是这样子存储的
字符串和字符数组在内存中的存储几乎是一样的不同的就是字符串就是会在后面加一个\0,表示程序的结束,系统在处理字符串的时候就是会检查一下后面的内容中有没有\0,有的话即是会终止程序,没有的话会继续检索,在这个时候会想到,日过在输出字符串的时候是一定添加一个\0,程序会不会做终止;
试一下:
#include <stdio.h>
int main(void)
{
printf("你好\0,大笨蛋!\n");
return 0;
}
运行结果如下:
D:\code\C\stu12.exe
你好
Process finished with exit code 0
运行结果说明后面直接加上\0,就会终止检索后面的字符串的内容;
2.字符串变量
字符串变量实际上就是一维字符数组。使用字符串常量初始化一维数组
char array[] = "小橙是最帅的!" ;
printf("%s",array);
return 0;
字符串必须包含\0,其最后一个字符肯定是\0,字符数组可以不要\0,;
3.格式化输出字符串
输出字符串时直接使用%s表示的是输出字符串,在上面的案例中是有体现的。
4.格式化输入字符串
使用scanf函数也可以实现字符串的输入,其中输入的格式也是%s,该函数的格式形是如下
scanf("%s",str)
数组名就代表数组的地址值,因此不需要再次指定地址,比如下面的形式就是错误的
scnaf("%s",&str)这个就是错误的;
#include <stdio.h>
int main(void){
printf("请输入一个字符串:\t");
char s1[] = "\0";
scanf("%s",s1);
printf("%s",s1);
return 0;
}
运行结果如下:
D:\code\Ccode\stu01.exe
请输入一个字符串:
这是一个字符串!
这是一个字符串!
Process finished with exit code -1073741819 (0xC0000005)
5.取字符串的长度:
a = strlen(str);用这个我的不行;还是建议用sizeof比较好;