分段故障-C语言-结构和For循环

分段故障-C语言-结构和For循环,c,segmentation-fault,C,Segmentation Fault,运行以下程序时,我遇到分段错误: printf仅用于测试结果,因为我希望获得此信息并将其添加到另一个数组中 #include <stdio.h> #include <string.h> struct proion { char onoma[30]; float timi; int stock; }; int main() { int i; for (i=0;i<=200;i++) { struct

运行以下程序时,我遇到分段错误: printf仅用于测试结果,因为我希望获得此信息并将其添加到另一个数组中

#include <stdio.h>
#include <string.h>

struct proion
{
    char onoma[30];
    float timi;
    int stock;  
};

int main()
{   
int i;
    for (i=0;i<=200;i++)
    {
        struct proion proion[i];
        strcpy (proion[i].onoma,"test");
        proion[i].timi=5;
        proion[i].stock=10;

        printf("%s\n%.2f\n%d\n",proion[i].onoma, proion[i].timi,proion[i].stock);
    }
return 0;
}
#包括
#包括
结构工程
{
char-onoma[30];
浮动timi;
国际股票;
};
int main()
{   
int i;

对于(i=0;i你可能会说:

struct proion proion[200];

for (i = 0; i < 200; i++)
{
    strcpy(proion[i].onoma, "test");

它将在数组结束后写入结构(导致分段错误)。当然,在每次循环后,整个数组都会被丢弃


还要注意,在更正的版本中,我们说的是
i<200
,而不是
i在为Proion创建数组的for循环中分配内存。
第一个循环是:

struct proion proion[0];
因此,当您访问
proion[i]
时,会出现分段错误,因为没有为该变量分配内存

对于其他循环也是如此,因为您要访问数组的第i个元素,但只有
0到i-1
元素


然而,这种方法是错误的。似乎您正在尝试创建200个结构。在这种情况下,只需在循环外创建数组或使用
malloc
动态分配内存。

您能描述一下代码应该做什么吗?我真的很好奇
struct proion[I]
在循环内部做什么?几乎肯定是一个错误,这就是为什么我建议它属于外部。我想创建200个格式为“proion”的结构,它有3个值:1.onoma 2.timi 3.stock我将创建另一个包含200条记录的数组,以便新创建的结构从一些数组中获取信息。它将在数组结束后写入结构。当然,每次循环后都会丢弃整个数组。“如何保存这些结构以备将来查询?例如,在其中一个详细信息中,哪一个是最高的?在更正的版本中,所有这些结构都在数组中。它们仅在原始版本中被丢弃,在for循环期间创建并销毁了201个数组。这是分段错误的实际原因。”。
struct proion proion[0];