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

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

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

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

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

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

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

cs 复制代码
#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表示是字符串常量,其他操作与二维数组一样。如下:

cs 复制代码
#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;
}
相关推荐
星空椰14 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
白露与泡影14 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
凯瑟琳.奥古斯特14 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
雪度娃娃14 小时前
转向现代C++——在意为改写的函数添加 override
开发语言·c++
星马梦缘15 小时前
aaaaa
数据结构·c++·算法
OpenApi.cc15 小时前
神经网络结构驱动+数据结构分析
数据结构·人工智能·神经网络
喵星人工作室15 小时前
C++火影忍者1.1.2
开发语言·c++
basketball61616 小时前
C++ 中的 ptrdiff_t 详解
开发语言·c++
星恒随风16 小时前
C语言数据结构排序算法详解(下):冒泡排序、快速排序、归并排序和计数排序
c语言·数据结构·笔记·学习·排序算法
月亮邮递员61616 小时前
Markdown语法总结
开发语言·前端·javascript