【发布时间】:2016-04-25 04:32:27
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef struct dictionary_entry
{
char *eng;
char *gr;
} term;
len = 0;
term *terms, *trm;
terms = (term*)malloc(0);
char temp1[50], temp2[50];
trm = (term*)malloc(0);
trm->eng = (char*)malloc(0);
trm->gr = (char*)malloc(0);
FILE *in = fopen("dictionary.txt", "r");
while(feof(in) == 0)
{
fscanf(in, "%s %s\n", temp1, temp2);
trm = (term*)realloc(trm, sizeof(term));
trm->gr = (char*)realloc(trm, sizeof(char) * strlen(temp1));
trm->eng = (char*)realloc(trm, sizeof(char) * strlen(temp2));
strcpy(trm->gr, temp1);
strcpy(trm->eng, temp2);
add(&terms, trm, &len);
}
free(trm->eng);
free(trm->gr);
free(trm);
fclose(in);
我试图从我的文件中读取一组单词(例如单词翻译)来创建字典,但我一运行程序就崩溃了。调试器将我指向 realloc 函数,并出现一条错误消息。消息是
[debug]找不到当前函数的边界
问题似乎与我正在使用的 realloc 函数有关。有没有人遇到过这个问题,如果有,我该如何解决?
我正在使用 Code::Blocks。
【问题讨论】:
-
检查
malloc、realloc、fopen和fscanf的返回值,每次-总是!请阅读this aboutfeof -
Harris, AgapwIesu 这只是程序的一部分,我只是忘记在此处包含 main() 函数。唯一的问题是 realloc() 函数