C语言中的字符与字符串
在 C 语言中,字符(char)和字符串(string)是两个基本的数据类型。字符是单一的字符数据,而字符串是由多个字符组成的字符数组。了解字符和字符串的处理方式是学习 C 语言的重要步骤。
1. 字符(char)
在 C 语言中,字符是存储单个字符的基本数据类型。字符类型通常用 char
来表示,大小为一个字节(8 位)。字符常量通常用单引号 ' '
包围。例如,'A'
、'1'
、'@'
等都是有效的字符常量。
字符的表示:
- 字符变量存储的是字符的 ASCII 码(或 Unicode 编码)。
- 例如,字符
'A'
的 ASCII 值是 65。
示例代码:
#include <stdio.h>
int main() {
char c = 'A'; // 声明字符变量并赋值
printf("Character: %c\n", c); // 输出字符 A
printf("ASCII value of %c: %d\n", c, c); // 输出字符的 ASCII 值
return 0;
}
输出:
Character: A
ASCII value of A: 65
字符常量与整数的关系:
C语言中的字符常量本质上是整数。你可以直接使用字符的 ASCII 码来赋值字符变量。
#include <stdio.h>
int main() {
char c = 65; // 'A' 的 ASCII 值
printf("Character: %c\n", c); // 输出字符 A
return 0;
}
输出:
Character: A
2. 字符串(String)
在 C 语言中,字符串是一组字符的集合。C 中的字符串是通过字符数组来实现的,以 空字符 '\0'
(ASCII 值为 0)作为结束标志。
字符串的表示:
- 字符串由一系列字符组成,字符通过双引号
""
包裹。 - 字符串会自动包含一个 空字符
'\0'
作为结尾。 - 字符串常量实际上是一个指向字符数组的指针。
示例代码:
#include <stdio.h>
int main() {
char str[] = "Hello, World!"; // 声明并初始化字符串
printf("String: %s\n", str); // 输出字符串
return 0;
}
输出:
String: Hello, World!
字符数组与字符串:
- 字符串本质上是字符数组,因此可以像普通数组一样访问其中的元素。
- 字符串以
'\0'
结尾,表示字符串的结束。
#include <stdio.h>
int main() {
char str[] = "Hello";
printf("First character: %c\n", str[0]); // 输出 H
printf("Last character: %c\n", str[4]); // 输出 o
return 0;
}
输出:
First character: H
Last character: o
3. 转义字符(Escape Sequences)
C 语言中的 转义字符 是用反斜杠 \
来表示的特殊字符。它们通常用于表示无法直接输入的字符,例如换行符、制表符、双引号等。转义字符通常出现在字符串中,用于控制输出的格式。
常见的转义字符:
\n
:换行符,表示输出一个新行。\t
:水平制表符,用于插入一个制表符。\\
:反斜杠字符,用于输出反斜杠。\'
:单引号字符,用于输出单引号。\"
:双引号字符,用于输出双引号。\r
:回车符,通常与换行符一起使用。\b
:退格符,删除前一个字符。\0
:空字符,用于标记字符串的结束。
转义字符的示例:
#include <stdio.h>
int main() {
printf("Hello, World!\n"); // 输出并换行
printf("Tab\tExample\n"); // 插入制表符
printf("Double quote: \"Hello\"\n"); // 输出双引号
printf("Single quote: \'Hello\'\n"); // 输出单引号
printf("Backslash: \\\n"); // 输出反斜杠
return 0;
}
输出:
Hello, World!
Tab Example
Double quote: "Hello"
Single quote: 'Hello'
Backslash: \
4. 字符串函数
C 标准库提供了许多用于操作字符串的函数,以下是一些常用的字符串操作函数:
1. strlen()
:计算字符串的长度(不包括空字符 \0
)。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello";
printf("Length of string: %lu\n", strlen(str)); // 输出 5
return 0;
}
2. strcpy()
:复制一个字符串到另一个字符串。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello";
char dest[10];
strcpy(dest, src); // 将 src 字符串复制到 dest
printf("Destination string: %s\n", dest); // 输出 Hello
return 0;
}
3. strcmp()
:比较两个字符串。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "Hello";
if (strcmp(str1, str2) == 0) {
printf("Strings are equal\n");
} else {
printf("Strings are not equal\n");
}
return 0;
}
输出:
Strings are equal
4. strcat()
:连接两个字符串。
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = " World!";
strcat(str1, str2); // 将 str2 连接到 str1 后面
printf("Concatenated string: %s\n", str1); // 输出 Hello World!
return 0;
}
5. sprintf()
:将格式化的输出写入字符串。
#include <stdio.h>
int main() {
char str[50];
int num = 100;
sprintf(str, "The number is %d", num); // 将格式化的输出存储在 str 中
printf("Formatted string: %s\n", str); // 输出 The number is 100
return 0;
}
5. 示例:处理字符与字符串
#include <stdio.h>
#include <string.h>
int main() {
char ch = 'A';
char str[50] = "Hello, ";
printf("Character: %c\n", ch); // 输出单个字符 A
printf("ASCII value of %c: %d\n", ch, ch); // 输出 A 的 ASCII 值
strcat(str, "World!"); // 连接字符串
printf("Concatenated String: %s\n", str); // 输出 Hello, World!
printf("Length of string: %lu\n", strlen(str)); // 输出字符串长度
return 0;
}
输出:
Character: A
ASCII value of A: 65
Concatenated String: Hello, World!
Length of string: 13
总结
- 字符(char) 用来存储单个字符,可以通过 ASCII 值来表示。
- 字符串 是字符数组,以空字符
'\0'
结尾。可以使用标准库函数来操作字符串(如strlen()
、strcpy()
、strcmp()
等)。 - 转义字符 在字符串中用于表示一些特殊字符,常见的如换行符
\n
、制表符\t
、双引号\"
等。
字符和字符串是 C 语言中处理文本和字符数据的基础,通过灵活运用它们,你可以实现各种文本操作和数据处理。
发表回复