c - 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);
}
解决方案
推荐阅读
- java - 两个独立服务中是否存在数据同步模式?
- c++ - 如何在 C++ 中正确实现 addObject() 函数?
- javascript - 记录来自 API 调用的函数结果 - Javascript
- reactjs - 您可以根据路由器位置动态更新 Firestore 查询吗?
- c - 为什么 fopen() 和 open() 不能识别 char 指针
- python - 带有 DeleteView 的 Bootbox 在 Django 中找不到 url
- python - 需要帮助打印清单
- mysql - docker-compose 与 Spring Boot 和 MySQL 集成不断发生错误通信链接失败
- linux - 在 pythonanywhere 中初始化 Tor 时出错 - 卡在 5%
- excel - vba 循环运行时单元格编辑错误