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,关注后即可获取最新文章推送

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

C 多维数组、特殊字符和字符串函数详解的更多相关文章

  1. python pandas字符串函数详解(转)

     pandas字符串函数详解(转)——原文连接见文章末尾 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等 ...

  2. Java学习之二维数组定义与内存分配详解

    二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. 注意: ...

  3. oracle中的字符串函数详解

    花了点时间 复习.了一下字符串函数 希望对初学者有帮助 ----------连接字符串函数-----------------select concat('leiyi','hubei') from du ...

  4. Mysql 字符串函数 详解

    字符串函数是最常用的一种函数了,如果大家编写过程序的话,不妨回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数占已使用过的函数很大一部分.MySQL中字符串函数也是最丰富的一类函数,表 ...

  5. php字符串函数详解

    nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $ ...

  6. 使用JS截取字符串函数详解

    一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //a ...

  7. C++ string 字符串函数详解

    运算符重载 + 和 +=:连接字符串 =:字符串赋值 >.>=.< 和 <=:字符串比较(例如a < b, aa < ab) ==.!=:比较字符串 << ...

  8. c语言字符串函数详解

    转载请注明来源:https://www.cnblogs.com/hookjc/ oid *memset(void *dest, int c, size_t count); 将dest前面count个字 ...

  9. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

    如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...

  10. Jquery之each函数详解

    最近项目被each函数坑惨了,想来还是好好整理下关于each函数的方方面面,一来方便自己查阅,二来为读者提供经验和教训,废话不多说,来看看Each函数到底是怎么坑人的. 一. 全局jQuery.eac ...

随机推荐

  1. python枚举之Enum模块

    枚举是与多个唯一常量值绑定的一组符号(即成员).枚举中的成员可以进行身份比较,并且枚举自身也可迭代. 枚举成员名称建议使用大写字母 # 示例 from enum import Enum,unique, ...

  2. python中partial用法

    应用 典型的,函数在执行时,要带上所有必要的参数进行调用.然后,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 示例pyqt5 ...

  3. 教程|在矩池云使用 Stable Diffusion web UI v1.5 模型和 ControlNet 插件

    今天给大家介绍下如何在矩池云使用 Stable Diffusion web UI v1.5 模型和 Stable Diffusion ControlNet 插件. 租用机器 租用机器需要选择内存大于8 ...

  4. PRINCE2系列一基于项目情境自定义解决方案

    PRINCE2(PRojects IN Controlled Environments,受控环境下的项目管理) 对项目进行了如下定义:项目是按照一个被批准的商业论证,为了交付一个或多个商业产品而创建的 ...

  5. Error creating bean with name 'XXX': Bean with name 'senseOneToSomeFeignImpl' has been injected into other beans [XXXXXX] in its raw version as part of a circular reference

    关于Spring框架中的循环依赖问题,您可以尝试以下几种方法来解决: 重新定义Bean依赖:重构代码以消除循环依赖.这可能涉及重新设计类,使它们不相互依赖即可运行. 使用Setter注入:与构造函数注 ...

  6. java数组案例

    数组:         数组就是用来存储一批同类型数据的内存区域(容器) 数组中的最大值实现方法:   数据拿到程序中去,用数组装起来. 定义一个变量,用于记录最大值.这个变量建议默认存储第一个元素作 ...

  7. 6 定时器 &中断管理&资源管理

    生成函数 周期,多久触发一次定时器(从定时器启动开始计算)  触发什么呢? 回调函数被调用,被谁调用呢 1,tick中断去调用timer函数  Linux中使用这个  (定时器回调函数若执行时间过长, ...

  8. 用户不在 sudoers 文件中。此事将被报告

    在终端,进入root模式 vim /etc/sudoers 在    sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL

  9. 泰凌微2.4G无线私有协议芯片开发总结

    案例     近些年,团队一直围绕着无线这块来做产品方案.一个无意的举动,接触到了泰凌微的2.4G私有协议芯片,发现这颗芯片在好几个场景中使用非常合适.就把这个芯片推荐给了客户,经过几个案子的历练.积 ...

  10. MYSQL 是如何保证binlog 和redo log同时提交的?

    MYSQL 一个事务在提交的时候能够保证binlog和redo log是同时提交的,并且能在宕机恢复后保持binlog 和redo log的一致性. 先来看看什么是redo log 和binlog,以 ...