C 多维数组、特殊字符和字符串函数详解
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 来获取字符串/数组的大小。请注意,sizeof 和 strlen 的行为不同,因为 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 多维数组、特殊字符和字符串函数详解的更多相关文章
- python pandas字符串函数详解(转)
pandas字符串函数详解(转)——原文连接见文章末尾 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等 ...
- Java学习之二维数组定义与内存分配详解
二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. 注意: ...
- oracle中的字符串函数详解
花了点时间 复习.了一下字符串函数 希望对初学者有帮助 ----------连接字符串函数-----------------select concat('leiyi','hubei') from du ...
- Mysql 字符串函数 详解
字符串函数是最常用的一种函数了,如果大家编写过程序的话,不妨回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数占已使用过的函数很大一部分.MySQL中字符串函数也是最丰富的一类函数,表 ...
- php字符串函数详解
nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $ ...
- 使用JS截取字符串函数详解
一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //a ...
- C++ string 字符串函数详解
运算符重载 + 和 +=:连接字符串 =:字符串赋值 >.>=.< 和 <=:字符串比较(例如a < b, aa < ab) ==.!=:比较字符串 << ...
- c语言字符串函数详解
转载请注明来源:https://www.cnblogs.com/hookjc/ oid *memset(void *dest, int c, size_t count); 将dest前面count个字 ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...
- Jquery之each函数详解
最近项目被each函数坑惨了,想来还是好好整理下关于each函数的方方面面,一来方便自己查阅,二来为读者提供经验和教训,废话不多说,来看看Each函数到底是怎么坑人的. 一. 全局jQuery.eac ...
随机推荐
- Vue 之 new vue({})与export default {} 的区别
刚入门 vue 的,可能会有这样的困惑:什么时候用new vue({}),什么时候用export default {} 呢? 比如,我们在用 cli 创建项目时 在 main.js 入口里面用的时ne ...
- 【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?
问题描述 在App Service Authentication 中配置 Azure AD 注册的应用信息后,根据官方文档,可以让前端应用实现用户 AAD 登录,然后通过前端应用获取的Token,来访 ...
- Java 一悟结束异常处理 Biu丶
- 11 .Codeforces Round 891 (Div. 3)E. Power of Points(推公式+前缀和优化)
E. Power of Points 题解参考 #include <bits/stdc++.h> #define int long long #define rep(i, a, b) fo ...
- vue遇到拖拽动态生成组件怎么办?[转]
知识点 主要是关注 动态生成 vue组件,这里是Vue2.0的demo Vue.Draggable 拖拽库 Vue.extend() 挂载 com.$mount() 生成组件 this.$refs.c ...
- SpringBoot单次执行任务,退出异常NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy
背景 使用SpringBoot 运行一次性作业,用于初始化 问题:直接使用System.exit退出时,遇到异常:NoClassDefFoundError: ch/qos/logback/classi ...
- MySQL 双主集群搭建
搭建 MySQL 双主集群涉及多个配置步骤,以及对于可能出现的问题的理解和解决.下面将详细说明搭建过程的每个步骤. 前提条件 环境准备:准备两台服务器(物理或虚拟),并确保它们可以互相通信(例如,通过 ...
- IP对讲广播音频模块解决方案
需求分析 随着数字化进程的不断推进,对讲已经覆盖到了各行业各业.并且也逐渐呈现出场景分散化的特点.鉴于此,团队根据市场的变化,及时推出了一款标准化的模块,方便系统集成厂商集成和运用,从而达到节省开 ...
- 记录--微信小程序获取用户信息的最新方法记录
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 微信小程序获取用户信息的几种方式 以下三种方式都无法获取到用户的openID 1. 开放组件获取用户信息<open-data> ...
- Arch Linux 安装手记
背景 今天尝试安装龙芯版 Linux,本来希望能安装 Debian 版,但只找到一些文档,没找到可安装版的 ISO. 后来顺着这篇文章找到了Arch Linux,就尝试安装了一下. 安装后发现竟然不会 ...