c - 段错误 - C 语言 - Struct 和 For 循环

标签 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 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] 时,您会遇到段错误,因为没有为该变量分配内存。

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

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

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

相关文章:

c - C语言中的字符串压缩

c - 在 Ubuntu 中运行,在 Debian 中运行 SegFault(C,strtok)

c - 使用嵌入式C测试环境缺少头文件

c++ - 段错误位置因printf而不同

java - java代码会导致linux中的段错误吗?

c - 将常量 char 指针分配给结构

c - 指向结构指针的空指针

c++ - 处理删除命令期间出现段错误

c - 如何在没有段错误的情况下将双指针传递给函数 C 语言

使用线程计算两个数字的总和