C_字符数组存储汉字字符串及其索引

news/2025/1/11 3:49:44/

字符串就是字符数组,可以定义一个char类型的数组来存储字符串。

如果要存储多个字符串则可以定义一个char类型的二维数组。

存储多个汉字字符串的话,可以考虑用char类型的二维数组。

不过要注意,一个汉字在内存中占用的字节数确实大于一个字符,具体是多少取决与编码格式。

UTF-8 编码:3个字节
GBK 编码:   2个字节

在定义存储汉字的字符串的数组时要注意留足空间,不然会报错,就像这段代码:

#include <stdio.h>
#include <math.h>int main()
{int num, i, len;int wei[9];  // 数字的每一位存储在这里char wei_str[][6] = {"个", "十", "百", "千", "万", "十万", "百万", "千万", "亿"};printf("请输入一个整数:");scanf("%d", &num);// 计算数字的位数i = num;len = 0;while (i) {len++;i /= 10;}printf("该数为%d位数\n",len);// 处理并打印每一位数字及其对应的位数for (int j = 0; j < len; j++) {wei[j] = (int)(num / pow(10, j)) % 10;  // 获取每一位printf("%s位是%d\n",wei_str[j],wei[j]);}return 0;
}

错误如下: initializer-string for array of chars is too long [-fpermissive]
定义的字符数组的初始化字符串超出了数组的容量。

在这里"十万", "百万", "千万",在UTF-8编码下是6个字节,加上‘\0'则需要7个字节。所以解决这个报错的方法就是将二维数组的第二个维度定义为7。如下:

而且二维数组的第二个维度必须定义,如果不想定义,可以考虑用另一种方式,用字符指针。如下:

并建议加上const表示是字符串常量,其他操作与二维数组一样。如下:

#include <stdio.h>
#include <math.h>int main()
{int num, i, len;int wei[9];  // 数字的每一位存储在这里const char *wei_str[] = {"个", "十", "百", "千", "万", "十万", "百万", "千万", "亿"};printf("请输入一个整数:");scanf("%d", &num);// 计算数字的位数i = num;len = 0;while (i) {len++;i /= 10;}printf("该数为%d位数\n",len);// 处理并打印每一位数字及其对应的位数for (int j = 0; j < len; j++) {wei[j] = (int)(num / pow(10, j)) % 10;  // 获取每一位printf("%s位是%d\n",wei_str[j],wei[j]);}return 0;
}


http://www.ppmy.cn/news/1561910.html

相关文章

在 Ubuntu 22.04 上从 Wayland 切换到 X11的详细步骤

在 Ubuntu 22.04 上从 Wayland 切换到 X11&#xff0c;步骤其实很简单&#xff0c;主要是在登录界面进行选择。以下是详细的步骤&#xff1a; 步骤 1&#xff1a;退出当前会话 首先&#xff0c;点击屏幕右上角的用户菜单&#xff0c;选择 注销 或 退出&#xff0c;以退出当前…

hive在大数据体系里面起到什么作用

数据存储与管理方面 核心作用&#xff1a;Hive 是基于 Hadoop 的数据仓库工具&#xff0c;它提供了一种将结构化数据存储在分布式文件系统&#xff08;如 HDFS&#xff09;中的方式。在大数据体系中&#xff0c;数据量往往非常庞大&#xff0c;传统的数据库系统很难有效存储和管…

k8s的原理和,k8s的安装

k8s:管理容器集群k8s的组成和调用原理cluster集群:控制平面和node共同构成一个cluster服务调用流程ingress控制器&#xff1a;让外部用户访问集群内部的服务kubeprox转发pod的容器中Control plan控制平面组件&#xff1a;控制和管理多个node1.api server:支持使用提供的api创建…

wps版excel中如何快速生成倒序序号?

使用wps办公软件打开的excel文件&#xff1a; 效果如下&#xff1a; 方法&#xff1a; 如&#xff1a;想生成此列序号从101~13序号&#xff0c;倒序排列。 在第1个格子中输入开头的最小数字&#xff1a;13 点击一下【13】这个单元格&#xff0c;然后鼠标放在右下角&#xff…

推荐系统重排:MMR 多样性算法

和谐共存&#xff1a;相关性与多样性在MMR中共舞 推荐系统【多样性算法】系列文章&#xff08;置顶&#xff09; 1.推荐系统重排&#xff1a;MMR 多样性算法 2.推荐系统重排&#xff1a;DPP 多样性算法 引言 在信息检索和推荐系统中&#xff0c;提供既与用户查询高度相关的文…

基于ResNet的CIFAR-10分类实现与分析

基于ResNet的CIFAR-10分类实现与分析 在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;一直是图像分类任务中的核心模型。随着残差网络&#xff08;ResNet&#xff09;的提出&#xff0c;模型训练效果得到了显著提升。ResNet通过引入残差连接&#xff0c;有…

vue 点击按钮复制文本功能(同时解决http不安全问题)

问题&#xff1a; 在HTTP并且非localhost域名的环境下&#xff0c;navigator.clipboard API 是不可用的。为了能够在HTTP页面上实现剪贴板功能&#xff0c;你可以使用一些polyfill库或者通过Flash、ActiveX等技术来实现&#xff0c;但这些方法相对复杂且不推荐。 不过&#xff…

Spring MVC详细介绍

1.MVC 设计模式 MVC&#xff08;Model-View-Controller&#xff09;是一种常见的软件设计模式&#xff0c;用于将应用程序的逻辑分离成三个独立的组件&#xff1a; 模型&#xff08;Model&#xff09;&#xff1a;模型是应用程序的数据和业务逻辑的表示。它负责处理数据的读取…