系列目录
在这一节中,我们将探讨C语言中的数组与字符串,包括一维数组与多维数组的定义与使用,字符串的处理,以及常用的字符串函数库。数组和字符串是C语言中最常用的数据结构之一,它们在存储和操作数据时非常有用。
一维数组与多维数组
数组是存储相同类型数据的集合,C语言支持一维数组和多维数组。
一维数组
一维数组是一个线性的元素集合,所有元素类型相同。可以使用以下语法声明一维数组:
数据类型 数组名[元素数量];
示例:
int numbers[5];
初始化数组时,可以使用大括号初始化列表,例如:
int numbers[5] = {1, 2, 3, 4, 5};
访问数组元素时,使用下标(索引)操作符 ‘[]’,例如:
printf("First element: %d\n", numbers[0]);
numbers[2] = 10;
多维数组
多维数组是数组的数组,最常见的是二维数组。可以使用以下语法声明二维数组:
数据类型 数组名[行数][列数];
例如:
int matrix[3][3];
初始化二维数组时,可以使用嵌套的大括号初始化列表,例如:
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
访问二维数组元素时,使用两个下标,例如:
printf("Element at (1, 2): %d\n", matrix[1][2]);
matrix[0][0] = 10;
字符串处理
字符串是字符的数组,以空字符 '\0' 结尾。C语言中没有专门的字符串类型,字符串是由字符数组实现的。
字符串的定义与初始化
可以使用字符数组定义字符串,例如:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
更常用的是直接使用字符串字面量,例如:
char greeting[] = "Hello";
字符串输入与输出
可以使用printf和scanf函数处理字符串的输入与输出:
char name[50];
printf("Enter your name: ");
scanf("%s", name);
printf("Hello, %s!\n", name);
注意:‘scanf’ 函数读取字符串时遇到空格会停止,若要读取包含空格的字符串,可以使用 ‘fgets’ 函数,例如:
printf("Enter your full name: ");
fgets(name, sizeof(name), stdin);
printf("Hello, %s!\n", name);
字符串函数库
C语言提供了一组标准库函数用于处理字符串,这些函数定义在 ‘<string.h>’ 头文件中。
字符串长度:strlen
strlen函数返回字符串的长度(不包括结尾的空字符),例如:
#include <string.h>
char str[] = "Hello, World!";
int length = strlen(str);
printf("Length: %d\n", length);
字符串复制:strcpy
strcpy函数将一个字符串复制到另一个字符串,例如:
char source[] = "Hello";
char destination[20];
strcpy(destination, source);
printf("Destination: %s\n", destination);
字符串连接:strcat
strcat函数将一个字符串连接到另一个字符串的末尾,例如:
char str1[20] = "Hello, ";
char str2[] = "World!";
strcat(str1, str2);
printf("Concatenated: %s\n", str1);
字符串比较:strcmp
strcmp函数比较两个字符串,返回值表示比较结果:
- 0:字符串相等;
- 正值:第一个字符串大于第二个字符串;
- 负值:第一个字符串小于第二个字符串。
例如:
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
printf("Comparison result: %d\n", result);
示例代码
以下是一个综合示例,展示了一维数组、多维数组、字符串处理以及常用字符串函数的使用:
#include <stdio.h>
#include <string.h>
int main() {
// 一维数组
int numbers[5] = {1, 2, 3, 4, 5};
printf("First element: %d\n", numbers[0]);
// 多维数组
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
printf("Element at (1, 2): %d\n", matrix[1][2]);
// 字符串处理
char greeting[] = "Hello";
printf("Greeting: %s\n", greeting);
char name[50];
printf("Enter your name: ");
scanf("%s", name);
printf("Hello, %s!\n", name);
// 字符串函数库
char str1[20] = "Hello, ";
char str2[] = "World!";
strcat(str1, str2);
printf("Concatenated: %s\n", str1);
char source[] = "Hello";
char destination[20];
strcpy(destination, source);
printf("Destination: %s\n", destination);
int length = strlen(destination);
printf("Length: %d\n", length);
int result = strcmp("Hello", "World");
printf("Comparison result: %d\n", result);
return 0;
}
总结
通过本节的学习,你已经了解了C语言中的数组与字符串的基本概念和使用方法,包括一维数组与多维数组的定义与操作,字符串的定义与处理,以及常用的字符串函数库。数组和字符串是C语言中重要的数据结构,掌握它们将为进一步学习和应用C语言打下坚实的基础。
下一篇:白骑士的C语言进阶篇 2.2 指针与内存管理