最近在背考研单词,做题时总是觉得有些单词很熟悉,但是又想不起来是否背过,就用大一学的C语言写了这个代码。经过本人10天的试用,非常好用,分享给大家。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<time.h>
int main(){
char word [5000][20];
char c[20];
int time1[200];
int keep1=0;
int keep2=0;
int keep3=0;
int i;int j;int mon,day,mon1,day1;
int read,read1;
int ret;
char seek[20];
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
mon=1+p->tm_mon;day=p->tm_mday;//获取当前日期
FILE*fp;
fp=fopen("C:\\Users\\86152\\Desktop\\考研\\英语\\单词\\words.txt","r");
while(fscanf(fp,"%s",c)!=EOF){
if(c[0]<=57&&c[0]>=48){
time1[keep2++]=keep1;
}
strcpy(word[keep1],c);
keep1++;
j=strlen(c);
for (i=0;i<j;i++){
c[i]='\0';
}
}
fclose(fp);
printf("您已记录%d个陌生词汇\n查询:\n",keep1-keep2);
while(scanf("%s",seek)!=EOF){
for(i=0;i<keep1;i++){
ret=strcmp(seek,word[i]);
if(ret==0)break;
}
read=i;
//printf("keep1=%d\nread=%d\nkeep2=%d",keep1,read,keep2);
if(read==keep1){
printf("not found\n");
FILE *fpWrite=fopen("C:\\Users\\86152\\Desktop\\考研\\英语\\单词\\words.txt","a");
keep3=time1[keep2-1];
i=0;
mon1=word[keep3][i++]-'0';
if(word[keep3][i]!='.'){
mon1=mon1*10+word[keep3][i++]-'0';
}
i++;
day1=word[keep3][i++]-'0';
// printf("%d\n",word[keep3][i]);
if(word[keep3][i]<58&&word[keep3][i]>47){
day1=day1*10+word[keep3][i++]-'0';
}
// printf("%d.%d %d.%d keep3=%d\n",mon1,day1,mon,day,keep3);
if(!(day1==day&&mon1==mon)){
fprintf(fpWrite,"\n%d.%d\n",mon,day);
j=0;
if(mon>=10) word[keep1][j++]=mon/10+'0';
word[keep1][j++]=mon%10+'0';
word[keep1][j++]='.';
if(day>=10)word[keep1][j++]=day/10+'0';
word[keep1][j++]=day%10+'0';
time1[keep2++]=keep1;
keep1++;
}else{
fprintf(fpWrite," ");
}
fprintf(fpWrite,"%s",seek);
strcpy(word[keep1++],seek);
fclose(fpWrite);
continue;
}
for(i=0;i<keep2;i++){
if(time1[i]>read)break;
}
read1=time1[i-1];read=read-read1;
printf("%s 第%d个\n",&word[read1],read);
j=strlen(seek);
for (i=0;i<j;i++){
seek[i]='\0';
}
}
return 0;
}
首先我们需要新建一个txt,作为我们的单词本,然后按照下面的格式记录我们每天所学的单词
当然你也可以直接新建一个空白的txt,从零开始记录单词。
运行当前代码,当检索到熟悉单词,会显示记录的时间和位置;当遇到陌生单词会将单词按照规定格式写入文本,代码附带了日期获取功能,所以如果当日是第一次记录单词,会自动写入日期。(注意,如果你要用这个代码,记得将代码中的路径改成你自己的,另外这个代码虽然经过了几天的试用仍然可能会有bug,如果遇到了请告诉我)。