c – 新编程,不得2D / 3D阵列

前端之家收集整理的这篇文章主要介绍了c – 新编程,不得2D / 3D阵列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,大家,我基本上是编程新手.我决定尝试开始使用C(不是C或C#),到目前为止我一直在做的很好.在我开始蹒跚前,我设法得到了二维阵列.虽然我觉得我广泛地了解2D整数数组,但我当然不了解3D字符串数组.

我正在通过采用技术并将其应用于我创建的实际程序中,汇率“计算器”基本上要求用户选择基础货币,然后以美元打印其价值.没有涉及到数学,我只是像谷歌/美元这样的谷歌搜索,并在下面讨论的数组中手动​​设置值.

但这里是我被卡住的地方.我认为学习多维数组的最佳方式是实际应用理论,所以这里是我迄今为止输入的内容(为简洁起见,我省略了我的程序的其他功能(包括调用这个函数代码) :

char currencies[5][3][4] = {
    {'1','2','3','4','5'},{'GBP','EUR','JPY','CAD','AUD'},{'1.5','1.23','0.11','0.96','0.87'}
};

int point,symbol,value;

displayarraycontents()
{
    for(point=1;point<5;point++){
        for(symbol=1;symbol<5;symbol++){
            for(value=1;symbol<5;symbol++)
                printf("%s ",currencies[point][symbol][value]);
            printf("\n");
        }}

}

因为C不具有字符串数据类型,所以建立字符串数组完全混淆了我的头.

为什么货币[5] [3] [4]?因为我正在存储共5种货币,每种货币用3个字母的符号(如EUR,CAD)标记,最多可以包含4位数字,包括小数点.

我正在尝试显示此列表:

1 GBP 1.5
2欧元1.23
3日元0.11
4加元0.96
5澳元0.87

当我单击构建时,我指定数组中的值的行将突出显示此警告的几个实例:

警告:在隐式常量转换中溢出

…和我打印数组的内容的行突出显示与此警告:

警告:格式’%s’期望类型’char *’,但参数2具有类型’int’

运行代码后,程序的其余部分工作正常,除了这个功能,这会产生一个“分段错误”或者一些这样的问题.

有人可以在这里给我一个手吗?任何帮助将不胜感激,以及任何链接到简单的C 2D / 3D字符串数组初始化教程! (我的两本书,K& R和教你自己C只提供不相关的模糊的例子)

提前致谢!
-Ryan

编辑:使用struct更新的代码

struct currency {
    char symbol[4];
    float value[5];
};


void displayarraycontents(){

        int index;

        struct currency currencies[] {
            {"GBP",1.50},{"EUR",1.23},{"JPY",0.11},{"CAD",0.96},{"AUD",0.87},};

}

我收到以下错误
main.c:99:error:嵌套函数被禁用,使用-fnested-functions重新启用
main.c:99:error:expected’=’,’,’;’,’asm’或’attribute’
main.c:100:error:expected’;’之前的’}’标记
main.c:100:error:在’,’标记之前的预期表达式

在实际的代码窗口本身,每个符号被标记为“意外的令牌”.

解决方法

在这种情况下,您实际上并不想要一个3D阵列.事实上,由于你有一个值表,所有你需要的是一个1D数组.

棘手的部分是数组的每个元素都需要存储两个东西:货币符号和相关联的汇率. C有一种构建一种存储两种东西的方式 – 它是结构体系.我们可以定义一个结构来保存单个货币:

struct currency {
    char symbol[4];
    char value[5];
};

(注意,这不会创建一个变量;它创建一个类型.struct currency对char是分析的,除了我们自己定义了前者的含义).

…我们现在可以创建一个这样的数组:

struct currency currencies[5] = { 
    {"GBP","1.5" },"1.23" },"0.11" },"0.96" },"0.87" } };

要迭代它们并打印出来,代码将如下所示:

void displayarraycontents(void)
{
    int point;

    for(point = 0; point < 5; point++)
    {
        printf("%d %s %s\n",point + 1,currencies[point].symbol,currencies[point].value);
    }
}

猜你在找的C&C++相关文章