C 多维数组、特殊字符和字符串函数详解

小万哥
• 阅读 298

C 多维数组

数组,也称为单维数组。这些非常棒,是您在 C 语言编程中会经常使用的东西。然而,如果您想要将数据存储为表格形式,例如带有行和列的表格,则需要熟悉多维数组。

二维数组

二维数组也称为矩阵,具有行和列的结构。

int matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };

第一个维度表示行数 [2],而第二个维度表示列数 [3]。

访问二维数组的元素

要访问二维数组的元素,您必须指定行和列的索引号。

printf("%d", matrix[0][2]);  // 输出 2

更改二维数组中的元素

要更改元素的值,请参考每个维度的元素索引号:

matrix[0][0] = 9;

循环遍历二维数组

要循环遍历多维数组,您需要为数组的每个维度设置一个循环。

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 3; j++) {
    printf("%d\n", matrix[i][j]);
  }
}

C 语言中的特殊字符

字符串必须用引号括起来,因此 C 语言会误解以下字符串并生成错误:

char txt[] = "We are the so-called "Vikings" from the north.";

为了避免这个问题,可以使用转义字符反斜杠 (\)。

转义字符反斜杠会将特殊字符转换为字符串字符:

  • \':单引号
  • \":双引号
  • \\:反斜杠
  • \n:换行符
  • \t:制表符
  • \0:空字符

以下示例演示了如何使用转义字符:

char txt[] = "We are the so-called \"Vikings\" from the north."; // 使用转义字符插入双引号
char txt[] = "It\'s alright."; // 使用转义字符插入单引号
char txt[] = "The character \\ is called backslash."; // 使用转义字符插入反斜杠

其他常用的 C 语言转义字符包括:

  • \n:换行符,将光标移动到下一行
  • \t:制表符,将光标移动到下一个制表位
  • \0:空字符,字符串的结束符

C 语言中的字符串函数

C 语言也提供了许多有用的字符串函数,可以用来对字符串进行一些操作。

要使用这些函数,您必须在程序中包含 <string.h> 头文件:

#include <string.h>

获取字符串长度

例如,要获取字符串的长度,可以使用 strlen() 函数:

char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 输出 26

我们使用 sizeof 来获取字符串/数组的大小。请注意,sizeofstrlen 的行为不同,因为 sizeof 在计数时也包括 \0 字符:

char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 27

您应该知道 sizeof 始终返回内存大小(以字节为单位),而不是实际的字符串长度:

char alphabet[50] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 50

连接字符串

要连接(合并)两个字符串,可以使用 strcat() 函数:

char str1[20] = "Hello ";
char str2[] = "World!";

// 连接 str2 到 str1(结果存储在 str1 中)
strcat(str1, str2);

// 打印 str1
printf("%s", str1); // 输出 Hello World!

请注意,str1 的大小应该足够大,可以存储组合后的两个字符串(在本例中为 20)。

复制字符串

要将一个字符串的值复制到另一个字符串,可以使用 strcpy() 函数:

char str1[20] = "Hello World!";
char str2[20];

// 将 str1 复制到 str2
strcpy(str2, str1);

// 打印 str2
printf("%s", str2); // 输出 Hello World!

请注意,str2 的大小应该足够大,可以存储复制的字符串(在本例中为 20)。

比较字符串

要比较两个字符串,可以使用 strcmp() 函数。

如果两个字符串相等,则返回 0,否则返回一个不为 0 的值:

char str1[] = "Hello";
char str2[] = "Hello";
char str3[] = "Hi";

// 比较 str1 和 str2,并打印结果
printf("%d\n", strcmp(str1, str2)); // 返回 0(字符串相等)

// 比较 str1 和 str3,并打印结果
printf("%d\n", strcmp(str1, str3)); // 返回 -4(字符串不相等)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
Python矩阵和Numpy数组的那些事儿
大家好,我是IT共享者,人称皮皮。今天给大家介绍矩阵和NumPy数组。一、什么是矩阵?使用嵌套列表和NumPy包的Python矩阵。矩阵是一种二维数据结构,其中数字按行和列排列。二、Python矩阵1\.列表视为矩阵Python没有矩阵的内置类型。但是,可以将列表的列表视为矩阵。例:A2\.如何使用嵌套列表。A三、NumPy数组1\.
CuterCorley CuterCorley
3年前
C语言入门系列之6.一维和二维数组
一、数组的概念有如下几组数据:学生的学习成绩银行的账单一行文字这些数据的特点是:具有相同的数据类型;使用过程中需要保留原始数据。C语言为这类数据,提供了一种构造数据类型——数组。在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组
Stella981 Stella981
3年前
PHP使用array_unique对二维数组去重处理
array\_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array\_unique对二维数组去重处理例子。php5.2.9版本增加了array\_unique对多维数组的支持,在处理多维数组是需要设置sort\_flags参数一维数组的重复项:使用array\_unique函数即可,使用实例如下:
Wesley13 Wesley13
3年前
Java中的数组(Array)
数组对于每一门编程语言来讲都是最重要的数据结构之一,当然不同的编程语言对数组的实现以及处理也不尽相同。数组的概念:把有限个相同类型元素变量放在一个整体,这个整体就叫做数组。数组中的每一个元素被称为数组元素,通常可以通过数组元素的索引(也叫下标,可以理解为一种编号,从0开始)来访问数组元素,包括数组元素的赋值(set)和取值(get)。
Wesley13 Wesley13
3年前
C++中二维数组作为函数参数
在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址。二维数组我们用的也很多,但是总是有各种问题,今天我总结一下有个很重要的一点,字符串“China”在编译器眼里就是一个地址!操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质如果"China",存储在内存中的0
Wesley13 Wesley13
3年前
Java基础14
1.二位数组可以看成以数组为元素的数组2.java中多维数组的声明和初始化一样,应该从高维到低维的顺序进行,例如1intanewint3;2a0newint2;3a1newint4;4a2newint3;5inttnew
Wesley13 Wesley13
3年前
C#中二维数组的行数和列数
最近在项目中用到二维数组,需要获取数组的行数和列数,本以为是很简单的一些东西,却发现网上好多答案都是错误的,遂写下随笔,希望之后有用到的同学们能够顺利解决答案。下面是一些关于数组的一些属性和方法以及解释,为了表示方便,我们定义了一个数组arr,int,arrnewint8,20;Rank是指数组的维数,作为二维数组,这
Stella981 Stella981
3年前
Python数据分析
1.numpy\支持多维数组与矩阵的科学计算器包功能:常用功能16条a.ndarrayn维数组/矢量的操作。b. 支持高级大量的n维数组与矩阵的运算。c.针对数组运算提供大量的数学函数库。2.scipy\配合numpy完成对矩阵的计算,因此依赖于numpy,且含多个子模块功能:常用15个函数a. 标准导
Wesley13 Wesley13
3年前
5种方式实现数组扁平化
数组扁平化概念数组扁平化是指将一个多维数组变为一维数组1,2,3,4,51,2,3,4,5实现1\.reduce遍历数组每一项,若值为数组则递归遍历,否则concat。functionflatten(arr){
小万哥 小万哥
8个月前
C++ 获取数组大小、多维数组操作详解
获取数组的大小要获取数组的大小,可以使用sizeof()运算符:示例cppintmyNumbers510,20,30,40,50;cout<<sizeof(myNumbers);结果:cpp20为什么结果显示为20而不是5,当数组包含5个元素时?这是因