当检索数组元素时,如何使用变量作为元素号
问题描述:
我正在研究一些解析日志数据的代码,这部分特别用于将一个月的小数形式转换为人形(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;}
}
}
答
我想建议你不使用for
循环,而是查找您直接需要的元素:
printf("%s\n", field_month[dmon]);
如果您dmon
为1索引(1
为一月,..,12
十二月),然后略有变化:
printf("%s\n", field_month[dmon-1]);
答
只是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
是什么'field_month'和' dmon'? – twain249
什么打印出来? –
字段月是一个数组与月份的人名,所以{jan,feb,march等}然后dmon是月份的小数版本 – lacrosse1991