1.概念
2.初始化
- 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以‘\0’作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符‘\0’存入数组,并以此作为该字符串是否结束的标志。有了‘\0’标志后,就不必再用字符数组 的长度来判断字符串的长度了。
- 初始化
char name[9] = "sj"; //在内存中以“\0”结束, \0 ASCII码值是0
char name1[9] = {'s','j','\0'};
char name2[9] = {'s','j',0};
char name3[9] = {'s','j'};//静态数组如果没有赋值默认就是0,0就相当于\0
3.c语言字符串常用方法
- C语言供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转 换、复制、搜索几类。 使用这些函数可大大减轻编程的负担。
- 用于输入输出的字符串函数,在使用前应包含头文件"stdio.h"
- 使用其它字符串函数则应包含头文件"string.h"。
- 1.字符串输出函数:puts
格式: puts(字符数组名)
功能:把字符数组中的字符串输出到显示器。即在屏幕上显示该字符串。
优点:
自动换行
可以是数组的任意元素地址
缺点
不能自定义输出格式, 例如 puts("hello %s");
char ch[] = "sj";
puts(ch);
输出结果: sj
//char *strcat(char *s1, const char *s2)
//size_t strlcat(char *dst, const char *source, size_t size)
//注意:要想使用字符串拼接函数, 那么s1必须是一个数组, 并且数组的长度必须大于拼接之后的长度 \ 如果s1数组的长度, 不能完全存放s1+s2+\0, 那么就会报错
char str1[10] = "sj";
char str2[10] = "cool";
char *c = strcat(str1, str2);
printf("%s\n",c);
//输出:
sjcool
// 为了避免拼接之后超出str1的存储范围, 那么可以动态计算str2中需要拷贝几个到str1后面不会超出
char str1[10] = "sj";
char str2[10] = "cool";
size_t length = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1;
strlcat(str1, str2, length);
printf("%s\n",str1);
//输出:
sjcool
// strcpy函数会将源的数据拷贝到目标中, 并且会覆盖掉目标中原有的数据
// 目标的容积必须能够存放拷贝的数据, 如果容积不够会报错
char str1[6] = "sj";
char str2[] = "cool";
printf("拷贝前 : %s\n", str1);
char *c = strcpy(str1,str2);
printf("拷贝后:%s\n",c);
//输出:
拷贝前 : sj
拷贝后:cool
// 注意: 拷贝操作是逐个替换, 拷贝了几个就替换几个,strncpy为了优化strcpy会出现崩溃的情况,动态的计算需要拷贝几个
char str1[6] = "sj";
char str2[] = "cool";
printf("拷贝前 : %s\n", str1);
size_t length = sizeof(str1)/sizeof(str1[0]) - 1;
char *d = strncpy(str1, str2, length);
printf("拷贝后:%s\n",d);
//输出:
拷贝前 : sj
拷贝后:cool
char str1[] = "aac"; // a a
char str2[] = "abc"; // a b
// strcmp它会对传入的字符串进行比较, 比较完毕之后会返回一个整型的值给我们
// 如果该值等于0,那么证明两个字符串相等
// 如果该值小于0, 那么证明str1小于str2
// 如果该值大于0, 那么证明str1大于str2
// strcmp的原理: 取出字符串中的每一个字符进行逐个比较, 如果发现不相等就不会继续往下比较
int res = strcmp(str1, str2);
printf("res = %i\n", res);
//输出:
res = -1
char name[] = "sj";
int size = sizeof(name);// 包含\0
printf("size = %d\n", size);
输出结果:3
//strlen:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。
char name[] = "sj";
size_t len = strlen(name2);
printf("len = %lu\n", len);
输出结果:2
网友评论