定义
- 字符串是一种重要的数据类型
- C语言中,字符串以字符串常量的形式出现或存储于字符数组中
- 字符串常量适用于程序不会对它们修改的字符串,其它字符串都必须存储于字符数组或动态分配的内存中
- 头文件string.h包含了使用字符串函数所需的原型和声明
字符串本质上是一个带有"\0"为结束标识的字符数组 []可以为空
char name[] = "xianhe";
printf("%s\n",name);// 占位符为%s
char name1[6] = {'x','i','a','n','h','e'};
printf("%lu\n",sizeof(name1));// 打印长度
printf("%lu\n",sizeof(name));// 字符串多"\0"作为结束标志
专门操作C语言字符串的函数
字符串长度
strlen 获得字符串长度的函数
注意:
strlen返回一个类型为size_t的值,这个类型的头文件stddef.h中定义,它是一个无符号整数类型
双引号里实际字符串的个数 区别好 sizeof
字符串拷贝 strcpy( , )
printf("%lu\n",strlen(name));//
char stu1[] = "12"; // 地址大
char stu2[] = "anyao12231231323"; // 地址小
printf("%s\n",strcpy(stu1, stu2));// 把后面的字符串 传给前边的字符串,前面的字符串被替换掉了
注意:最好使用字符串替换时,第一个字符串一定要 >= 第二个字符串的长度 否则可能会崩溃
!!!:这几个字符串是放在栈
字符串比较 strcmp( , )
找到第一个不相同的字符,比较他们的asscii码值,作差
字符串拼接 strcat( , )
char letter[] = "bAa";
char letter1[] = "bab";
int count = strcmp(letter, letter1);
strcat(letter, letter1);// 把后边的字符串拼接到前面的字符串之后
printf("%s\n",letter);
倒转字符串
char c1[] ="abcdeqpef";// "edcba"
for(int i = 0; i <strlen(c1) / 2; i++) {
c1[i] = c1[i] ^ c1[strlen(c1) - i -1];
c1[strlen(c1) - i -1] = c1[i] ^ c1[strlen(c1) - i -1];
c1[i] = c1[i] ^ c1[strlen(c1) - i -1];
}
printf("%s\n",c1);