首页 > 解决方案 > C中的结构抛出段错误(核心转储)

问题描述

提前抱歉,因为代码不完全是英语,不是我的第一语言。也不好意思,我的文笔有点乱。当尝试将数据从文件传递到将存储来自文件每一行的信息的结构时,我遇到了段错误(核心转储)。该文件也是结构化的,因此不同行没有不同的输入。有什么办法可以将内存分配与结构一起使用?

编辑:首先,感谢到目前为止的帮助。所以,经过一番测试,找到了段错误的根源(核心转储),但我无法理解,它似乎是通过尝试打开一个由变量给出的名称的文件而生成的。它只是作为一个示例编写的,它使用了一个变量,在我的一本 C 书中。任何线索有什么问题?

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

typedef struct tipo
{
    int div_1;
    int div_2;
    int div_3;
    int div_4;
    long int cc;
    char nome [60];
    char morada [60];
    int porta;
    char postal [8];
 }  potato;

void read_file (FILE *fp, potato *tipo)
{
    char name[20];
    int w;
    int i;
    printf("Pretende abrir o base.txt?\n");
    printf("Se sim, escreva 1.\n");


  printf("Caso contrário, escreva 0\n");
    scanf(" %d ", &w);
    if(w)
    {
        fp = fopen("base.txt", "r+");
    }
    else
    {
        printf("Indique o nome do ficheiro que pretende abrir: \n");
        scanf(" %s ", name);
        fp = fopen(name, "r+");
    }
    for(i=0;i<EOF;i++)
    {
        getInfo(tipo, fp, i);
    }
        fclose(fp);
}

void getInfo(potato *tipo, FILE *fp, int i) //Auxiliary function
{
    fscanf(fp,"%d.%d.%d.%d",tipo[i].div_1, tipo[i].div_2, tipo[i].div_3, tipo[i].div_4);
    fscanf(fp," %ld ", &tipo[i].cc);
    fgets(tipo[i].nome, 60, fp);
    fgets(tipo[i].morada, 60, fp);
    fscanf(fp," %d ", &tipo[i].porta);
    fgets(tipo[i].postal, 60, fp);
}

标签: c

解决方案


推荐阅读