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

问题描述:

我正在研究一些解析日志数据的代码,这部分特别用于将一个月的小数形式转换为人形(so 1将是jan),为了实现这一点,我尝试使用for循环和if语句的组合,并且认为我可以简单地使用变量作为语句的数字来检索数组单元格,但它没有达到预期的效果,所以如果有人可以提供建议,我该如何做到这一点,我将不胜感激,谢谢! (这里是代码的主要块)当检索数组元素时,如何使用变量作为元素号

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

是什么'field_month'和' dmon'? – twain249

+0

什么打印出来? –

+0

字段月是一个数组与月份的人名,所以{jan,feb,march等}然后dmon是月份的小数版本 – lacrosse1991

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

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

如果您dmon为1索引(1一月,..,12十二月),然后略有变化

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

这是正确的方式并且很好地解释了。 –

+0

@Evan,请注意tpaksu更新了他的答案,包括'dmon-1'。 – sarnold

+0

的确如此,但您的解释清晰简洁。我更新了我的评论。 –

只是printf("%s",field_month[dmon])field_month[dmon-1]因为它取决于你的月名阵列上?

您的循环可以optmized到:

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

因为它真正做的是防止被用于访问数组的索引无效的唯一的事情...

+0

避免不良数组访问的好处 - 但数组是零基于,因此索引从'0'到'11' - 除非一个伪元素存储在第一个阵列位置。 – sarnold