[英]How to Properly use Array of Structures of C
我最近开始学习 C 语言中的结构。 我尝试了一个示例程序来扩展我的学习曲线。 但是,在这个主题中,我面临一些错误。 任何人都请找出以下程序中的错误。
#include<stdio.h>
main() {
int i;
struct elements {
int z; /* Atomic Number */
float m; /* Mass Number */
char *name;
char *symbol;
};
struct elements e[5];
e[0] = (struct elements){1,1.008,"Hydrogen","H"};
e[1] = (struct elements){2,4.0026,"Helium","He"};
e[2] = (struct elements){3,6.94,"Lithium","Li"};
clrscr();
for(i=0;i<3;i++) {
printf("Element Name: %s\n",e[i].name);
printf("Symbol: %s\n",e[i].symbol);
printf("Atomic Number: %d\n",e[i].z);
printf("Atomic Mass: %0.2f\n",e[i].m);
}
getch();
return 0;
}
这显示以下错误消息:
尽管有其他评论,但如果这是您必须使用的,那么您仍然需要解决方案。
尝试:
struct elements e[5] = {
{1,1.008,"Hydrogen","H"},
{2,4.0026,"Helium","He"},
{3,6.94,"Lithium","Li"}
};
您所拥有的将在以后的编译器上工作(尽管有些人希望name
和symbol
的结构中的char const *
接受字符串文字),但实际上它读起来不是很漂亮,在定义整个数组时也没有必要。
如果这样做,您可以省略数组大小(将[5]
更改为[]
),它将根据提供的元素数量调整大小。
您没有使用标准 C 编译器,因此您无法使用标准 C 语言编写代码。
您将不得不求助于被称为“C89”/“C90”的 1989 年版本的 C 语言。 它不支持复合文字功能(struct elements){1,1.008,"Hydrogen","H"};
,因为那个是 23 年前添加到 C 语言中的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.