C 检索数组元素时,如何使用变量作为元素编号

C 检索数组元素时,如何使用变量作为元素编号,c,C,我正在编写一些代码来解析日志数据,这一部分特别用于将一个月的十进制形式转换为人形形式,因此1将是jan,为了实现这一点,我尝试使用for循环和if语句的组合,我曾认为我可以简单地使用一个变量作为语句的编号来检索数组单元格,但结果并不像预期的那样,因此如果有人能就我如何检索数组单元格提供建议,我将非常感谢,谢谢! 下面是代码的主要部分 for ( x = 0; x < 11; x++ ) { int altint = 1 + x; if ( dmon == altint )

我正在编写一些代码来解析日志数据,这一部分特别用于将一个月的十进制形式转换为人形形式,因此1将是jan,为了实现这一点,我尝试使用for循环和if语句的组合,我曾认为我可以简单地使用一个变量作为语句的编号来检索数组单元格,但结果并不像预期的那样,因此如果有人能就我如何检索数组单元格提供建议,我将非常感谢,谢谢! 下面是代码的主要部分

for ( x = 0; x < 11; x++ ) {
    int altint = 1 + x;
    if ( dmon == altint ) {
            printf( "%s\n", field_month[x] );
            {break;}
    }
}

只需打印%s、field\u month[dmon]或field\u month[dmon-1],因为这取决于您的月份名称数组?

只需打印%s、field\u month[dmon]或field\u month[dmon-1],因为这取决于您的月份名称数组?

我建议您不要使用for循环,而是直接查找所需的元素:

printf("%s\n", field_month[dmon]);
如果您的dmon在1月为1-1,12月为12,则有一个轻微的变化:

printf("%s\n", field_month[dmon-1]);

我建议您不要使用for循环,而是直接查找所需的元素:

printf("%s\n", field_month[dmon]);
如果您的dmon在1月为1-1,12月为12,则有一个轻微的变化:

printf("%s\n", field_month[dmon-1]);

您的for循环可以优化为:

if (dmon >= 1 && dmon <= 12)
{
    printf("%s\n", field_month[dmon]);
}

因为它真正做的唯一一件事是防止使用无效索引访问阵列…

您的for循环可以优化为:

if (dmon >= 1 && dmon <= 12)
{
    printf("%s\n", field_month[dmon]);
}

因为它真正做的唯一一件事就是防止一个无效的索引被用来访问你的数组…

什么是field_month,而dmon?field month是一个带有月份人名的数组,所以{jan,feb,march,等等}然后dmon是monthoh shit的十进制版本实际上犯了一个愚蠢的错误,已经把数组本身的名称和月份的数字引用弄混了,不过现在可以很好地工作了,谢谢!什么是field_month,还有dmon?field month是一个数组,其中包含了月份的人名,所以{jan,feb,march,etc}然后dmon是monthoh shit的十进制版本,实际上犯了一个愚蠢的错误,混淆了数组本身的名称和对月份的数字引用,不过现在工作得很好,谢谢@埃文,请注意,tpaksu更新了他的答案,加入了dmon-1.True,但你的解释很清楚和简洁。我更新了我的评论。谢谢!如果我想保存输出,我会将printf的输出保存到一个变量吗?@lacrosse1991:您将无法将printf3的输出保存到一个变量-毕竟,它会打印到一个标准IO流。最好是像char*month=field_month[dmon];。这会给你一个指向数据的指针——它不会复制数据。那以后会很重要谢谢工作也很好,抱歉,如果这些都是愚蠢的问题,仍然掌握了窍门,但C的运行速度非常值得:@Evan,注意tpaksu更新了他的答案,加入了dmon-1。没错,但你的解释很清楚和简洁。我更新了我的评论。谢谢!如果我想保存输出,我会将printf的输出保存到一个变量吗?@lacrosse1991:您将无法将printf3的输出保存到一个变量-毕竟,它会打印到一个标准IO流。最好是像char*month=field_month[dmon];。这会给你一个指向数据的指针——它不会复制数据。那以后会很重要谢谢工作也很好,抱歉,如果这些是愚蠢的问题,仍然掌握着窍门,虽然C的运行速度非常值得:避免错误的数组访问的好处是——但数组是基于零的,因此索引范围从0到11——除非在第一个数组位置存储了伪元素。避免错误的数组访问的好处是——但是数组是基于零的,因此索引范围从0到11——除非是伪元素元素存储在第一个数组位置。