如果帮助枝芦饥到您,请记得采纳为满意答案哈,谢谢哗含!祝您生活猛返愉快! vae.la
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "ctype.h" #define ROWS 256 #define COLS 32 static FILE *fpstatic 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,countint startchar *pt[ROWS]char ch, lenchar inputif((fp=fopen("words.txt","a+"))==NULL) { fputs("不能打开或建立文件!\n",stderr)exit(1)} fseek(fp,0L,SEEK_END)start=(int)ftell(fp)/32count=startrewind(fp)if(fread(a,32*sizeof(char),start,fp)==0) { i=0puts("请输入单词(每行一个虚谨),在新行输入END结束输入:")while(i<ROWS&&scanf("%s", a[i])==1) { fflush(stdin)if(strncmp(a[i],"END",3)==0) { count+=ibreak} if(check(a[i], i)) continuei++} } puts("您要做些什么?困雀")puts("a. 显示已有的单词 b. 添加新单词")puts("c. 对已有的单词进行排序 d. 退出")while((input=get_option())!='d') { if(input=='a') { puts("已有的单词:")for(i=0i<counti++) { printf(" ")puts(a[i])} } if(input=='b') { puts("请输入新的单词(汪誉早每行一个),在新行输入END结束输入: ")count=b(count)} if(input=='c') { puts("对单词进行排序:")c(pt, count)for(i=0i<counti++) { printf(" ")puts(pt[i])} } puts("还要做些什么?")} storage(pt,count)fclose(fp)puts("再见!")return 0} char get_option(void) { char chwhile((ch=getchar())<'a'||ch>'d') { while((ch=getchar())!='\n') puts("请输入a,b,c或者d.")} fflush(stdin)return ch} int b(int count) { int ii=countwhile(i<ROWS&&scanf("%s", a[i])==1) { fflush(stdin)if(check(a[i], i)) continueif(strncmp(a[i],"END",3)==0) { count=ibreak} i++} return count} void c(char *pt[], int count) { int i,jchar *tempfor(i=0i<ROWSi++) pt[i]=a[i]for(i=0i<counti++) for(j=i+1j<countj++) { if(strcmp(pt[i],pt[j])>0) { temp=pt[i]pt[i]=pt[j]pt[j]=temp} } } int check(char arr[], int count) { int iint flag=0for(i=0i<strlen(arr)i++) if(isalpha(arr[i])==0) { printf("%s不是一个单词.\n",arr)flag=1break} for(i=0i<counti++) if(strncmp(a[i],a[count],strlen(a[count])+1)==0) { puts("重复的单词!")flag=1} return flag} void storage(char *pt[], int count) { int i,jchar ptr[ROWS][COLS]c(pt, count)for(i=0i<counti++) for(j=0pt[i][j]!='\0'j++) ptr[i][j]=pt[i][j]fp=fopen("words.txt","w+")rewind(fp)fwrite(ptr,32*sizeof(char),count,fp)}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)