简单英文字典

2022-08-02 教育 51阅读
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define ROWS 256
#define COLS 32
static FILE *fp;
static char a[ROWS][COLS];
char get_option(void);
int b(int count);
void c(char *pt[], int count);
int check(char arr[], int count);
void storage(char *pt[], int count);
int main(void)
{
int i,count;
int start;
char *pt[ROWS];
char ch, len;
char input;
if((fp=fopen("words.txt","a+"))==NULL)
{
fputs("不能打开或建立文件!\n",stderr);
exit(1);
}
fseek(fp,0L,SEEK_END);
start=(int)ftell(fp)/32;
count=start;
rewind(fp);
if(fread(a,32*sizeof(char),start,fp)==0)
{
i=0;
puts("请输入单词(每行一个),在新行输入END结束输入:");
while(i{
fflush(stdin);
if(strncmp(a[i],"END",3)==0)
{
count+=i;
break;
}
if(check(a[i], i))
continue;
i++;
}
}
puts("您要做些什么?");
puts("a. 显示已有的单词 b. 添加新单词");
puts("c. 对已有的单词进行排序 d. 退出");
while((input=get_option())!='d')
{
if(input=='a')
{
puts("已有的单词:");
for(i=0;i{
printf(" ");
puts(a[i]);
}
}
if(input=='b')
{
puts("请输入新的单词(每行一个),在新行输入END结束输入: ");
count=b(count);
}
if(input=='c')
{
puts("对单词进行排序:");
c(pt, count);
for(i=0;i{
printf(" ");
puts(pt[i]);
}
}
puts("还要做些什么?");
}
storage(pt,count);
fclose(fp);
puts("再见!");
return 0;
}
char get_option(void)
{
char ch;
while((ch=getchar())<'a'||ch>'d')
{
while((ch=getchar())!='\n')
;
puts("请输入a,b,c或者d.");
}
fflush(stdin);
return ch;
}
int b(int count)
{
int i;
i=count;
while(i{
fflush(stdin);
if(check(a[i], i))
continue;
if(strncmp(a[i],"END",3)==0)
{
count=i;
break;
}
i++;
}
return count;
}
void c(char *pt[], int count)
{
int i,j;
char *temp;
for(i=0;ipt[i]=a[i];
for(i=0;ifor(j=i+1;j{
if(strcmp(pt[i],pt[j])>0)
{
temp=pt[i];
pt[i]=pt[j];
pt[j]=temp;
}
}
}
int check(char arr[], int count)
{
int i;
int flag=0;
for(i=0;iif(isalpha(arr[i])==0)
{
printf("%s不是一个单词.\n",arr);
flag=1;
break;
}
for(i=0;iif(strncmp(a[i],a[count],strlen(a[count])+1)==0)
{
puts("重复的单词!");
flag=1;
}
return flag;
}
void storage(char *pt[], int count)
{
int i,j;
char ptr[ROWS][COLS];
c(pt, count);
for(i=0;ifor(j=0;pt[i][j]!='\0';j++)
ptr[i][j]=pt[i][j];
fp=fopen("words.txt","w+");
rewind(fp);
fwrite(ptr,32*sizeof(char),count,fp);
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com