白骑士的C语言教学进阶篇 2.1 数组与字符串

22 篇文章 0 订阅

系列目录

上一篇:白骑士的C语言基础篇 1.5 数据输入与输出

        在这一节中,我们将探讨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 指针与内存管理​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白骑士所长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值