当我运行以下代码时,出现分段错误:
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;
}

最佳答案

分配内存在for循环中,您将为Proion创建一个数组。
第一个循环是:

struct proion proion[0];


因此,当您访问proion[i]时,会遇到分段错误,因为没有为该变量分配内存。

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

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

关于c - 段错误-C语言-Struct和For循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28015349/

10-11 04:36