说我已经声明了一个结构
struct mystruct {
char a[10];
double b;
}
struct mystruct array[20] = {
{'test1',1.0},
{'test2',2.0} <---- I just want to declare 2 items first because I am going to add new ones later.
};
int i;
for( i=0; array[i].a != NULL ;i++){
.... <--- so here I just want to display what is initialized first
}
然而,for 循环显示超过了 2 个项目(即显示 20 个项目,但其余的都是垃圾)。我只想当前仅显示初始化的内容,即使我声明要存储其中的 20 个。怎么做?谢谢。
我用的是C90标准。
另外,假设我将来添加了更多项目,但仍然少于 20 个项目,我只想显示到“最后一个有效项目”。
对于接受初始化语法的编译器(应该是任何标准 C 编译器),您应该能够编写:
struct mystruct
{
char a[10];
double b;
}; // semi-colon added!
struct mystruct array[20] =
{
{ "test1", 1.0 }, // character strings!
{ "test2", 2.0 },
};
enum { ARRAY_SIZE = sizeof(array) / sizeof(array[0]) };
int i;
for (i = 0; i < ARRAY_SIZE && array[i].a[0] != '\0'; i++)
{
printf("[%s] => %f\n", array[i].a, array[i].b);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)