#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
#include<time.h>
//1.定义一个结构体
struct dicts
{
char * word; //存放单词
char * trans; //存放单词的意思
};
int main(void)
{
int MAXNUM = 0;
char arr[1024] = { 0 };
int i = 0;
struct dicts * dic;
struct dicts * dic1;
dic = (struct dicts *) malloc(sizeof(struct dicts)*MAXNUM);
dic1 = (struct dicts *) malloc(sizeof(struct dicts));
//打开一个单词文件
FILE * fp = fopen("D:\\dict.txt", "r");
if (!fp)
{
printf("文件打开失败!");
return -1;
}
//判断dict.txt中有多少个单词
while (!feof(fp))
{
fgets(arr, 1024, fp);
i++;
}
MAXNUM = i / 2;
printf("%d\n", MAXNUM);
//将文件光标从新定位到开头
rewind(fp);
//将所有的单词都读取到dic结构体中
i = 0;
while (!feof(fp))
{
printf("%d\n", i);
//将单词放到dic[i].word中
memset(arr, 0, 1024);
fgets(arr, 1024, fp);
dic[i].word = (char *)malloc(strlen(arr) + 1);
memset(dic[i].word, 0, strlen(arr) + 1);
strncpy(dic[i].word, arr, strlen(arr) + 1);
//将单词的意思放到dic[i].trans中
memset(arr, 0, 1024);
fgets(arr, 1024, fp);
dic[i].trans = (char *)malloc(strlen(arr) + 1);
memset(dic[i].trans, 0, strlen(arr) + 1);
strncpy(dic[i].trans, arr, strlen(arr) + 1);
i++;
}
........(下面代码没写,从上面的循环崩的。)
为啥会崩感觉没错啊!内存也充足。就是单词个数有11万个,但是每次运行在不同的地方崩掉,有时候循环100个单词,有时候循环2000个单词。
以下是dict.txt中一部分内容:
#a
Trans:art. 一;字母A
#a.m.
Trans:n. 上午
#a/c
Trans:n. 往来帐户@往来:come - and - go; contact;
#aardvark
Trans:n. 土猪
#aardwolf
Trans:n. 土狼
#aasvogel
Trans:n. 秃鹰之一种
#abaci
Trans:n. 算盘
#aback
Trans:ad. 向后地;朝后地
#abacus
Trans:n. 算盘
#abaft
Trans:ad. 向船尾@prep. 在...后
#abalone
Trans:n. 鲍鱼
#abandon
Trans:vt. 放弃;沉溺@n. 放任
#abandoned
Trans:a. 被抛弃的;自弃的;自甘堕落的
#abandonee
Trans:n. 被遗弃者;被委付者
#abandoner
Trans:n. 遗弃者;委付者
#abandonment
Trans:n. 放弃;自暴自弃;放纵
#abas
Trans:vt. 打倒
#abase
Trans:vt. 降低...的地位;降低...的品格;贬抑
#abasement
Trans:n. 贬抑;屈辱;谦卑