字符与字符串的区别
- 符号
字符 ' ' 单引号
字符串 " " 双引号
- 内容
字符 单个字符
字符串 多个字符
- 输入输出格式
字符 %c
字符串 %s
- 标识
字符串 '\0' 做结尾
字符串的定义与初始化
在 C 语言中,字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
字符串数组
1)数组形式
格式:
char 数组[长度] = {'字符'}
下面的声明和初始化创建了一个 Hello wolrd 字符串。由于在数组的末尾存储了空字符'\0',所以字符数组的大小比单词 Hello wolrd 的字符数多一个。
char hi[12] = {'H', 'e', 'l', 'l', 'o',' ', 'w','o','r','l','d', '\0'};
依据数组初始化规则,您可以把上面的语句写成以下语句:
char hi[] = "Hello word";
注意:字符串面量是常量
2)直接赋首地址
char school[20] = "第一中学";
3)省略长度
char hello1[] = "Hello world";
char hello2[] = { "Hello world" };
字符指针
const char *hello3 = "Hello world";
const char *s = "第一中学";
字符串操作
序号 | 函数 & 目的 |
---|---|
1 |
strcpy_s(s1, s2); 复制字符串 s2 到字符串 s1。 |
2 |
strcat_s(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。 |
3 |
strlen(s1); 返回字符串 s1 的长度。 |
4 |
strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。 |
5 |
strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
6 |
strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
#include <stdio.h>
#include <string.h>
int main()
{
char str1[14] = "runoob";
char str2[14] = "google";
char str3[14];
int len;
/* 复制 str1 到 str3 */
strcpy_s(str3, str1);
printf("strcpy_s( str3, str1) : %s\n", str3);
/* 连接 str1 和 str2 */
strcat_s(str1, str2);
printf("strcat_s( str1, str2): %s\n", str1);
/* 连接后,str1 的总长度 */
len = strlen(str1);
printf("strlen(str1) : %d\n", len);
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
strcpy_s( str3, str1) : runoob
strcat_s( str1, str2): runoobgoogle
strlen(str1) : 12
通过指针操作字符串
一级指针变量与一维数组的关系
int *p 与 int q[10]
- 数组名是指针(地址)常量
- p=q;p+i是 q[i] 的地址
- 数组元素的表示方法:下标法和指针法,
即:若p=q,则p[i]、q[i]、*(p+i)、*(q+i)是等价的
- 形参数组实质上是指针变量。
即:int q[ ] 与 int *q 等价
数组名就是指针变量
- 在定义指针变量(表示形参)时,不能把int *p写成 int p[];
- 系统只给p分配能保存一个指针值的内存区(一般2字节);而q分配2*10字节的内存区
字符串与指针
实例:
#include<stdio.h>
int main()
{
char string[] = "I love China";
printf("%s\n", string); //I love China
printf("%s\n", string + 7); //China
}
- 字符串的指针就是字符串的首地址,即第一个字符的地址,可以使用字符指针变量来保存这个地址。
- 使用字符指针可以处理字符串
- 字符指针的定义及使用
方法一:定义和赋值一起
const char *string = "I love China";
方法二:先定义,后赋值
const char* string;
string= "I love China";
利用字符指针修改后的实例:
#include<stdio.h>
int main()
{
const char *string = "I love China";
printf("%s\n", string);
string += 7;
while (*string)
{
putchar(string[0]);
string++;
}
}