使用方法:
一,先用金山词霸的生词本导出单词列表(导出格式选择"纯文本文本格式"),导出文件名为1.txt,2.txt .... n.txt(便于批量处理)
二,把该程序copy到生词表所在目录,并建立一个done目录,打开该程序并按里面提示做。
三,把done目录里面格式化好的文本文件做成JAVA电子书(使用JBookMaker软件,软件作者主页:http://www.bigwater.org)
程序及程序源文件下载::
程序源代码:
#include<stdio.h>
#include<iostream.h>
#include<string.h>
// 默认后缀名
char suffix[20]="-J.txt";
// 默认目标文件目录名
char mulu[20]="done";
// 默认手机显示行数(row>=3)
int row=6;
// max用以记录一共有几个单词
int max;
void readFile(FILE *fp){
char ch;
rewind(fp);
while(!feof(fp)){
ch=fgetc(fp);
cout<<ch;
}
rewind(fp);
}
// 从fp中读出第n个以symbol符号开头的那一行的数据,放入s中
int getStrWord(FILE *fp,int n,char symbol,char *s){
int i=0;
char ch,ch1=‘=‘,ch2=‘\n‘;
rewind(fp);
if(n>max){
cout<<"读取"<<symbol<<"符号数据 超出范围";
return false;
}
// 定位文件指针位置
while(i!=n){
ch=fgetc(fp);
if(ch==‘+‘ || ch==‘\\‘ || ch==‘&‘){
if(ch2==‘\n‘){
if(ch==symbol && ch1!=symbol){
i++;
}
ch1=ch;
}
}
ch2=ch;
}
// 读出写入到s
ch1=symbol;
if(symbol==‘\\‘){
i=0;
}else{
s[0]=ch;
s[1]=‘ ‘;
s[2]=‘ ‘;
ch=fgetc(fp);
i=3;
}
while(!feof(fp) && ch1==symbol){
s[i++]=ch;
ch2=ch;
ch=fgetc(fp);
if(ch==‘+‘ || ch==‘\\‘ || ch==‘&‘){
if(ch2==‘\n‘){
ch1=ch;
}
}
}
s[i-1]=‘\0‘;
rewind(fp);
return true;
}
// 返回总共有几个单词
int getMax(FILE *fp){
int i=0;
rewind(fp);
while(!feof(fp)){
if(fgetc(fp)==‘+‘){
i++;
}
}
rewind(fp);
return i;
}
// 转化程序,输入源文件名,目标文件名
int convertFile(char *file1,char *file2){
int i,j;
char str[500];
FILE *fp1,*fp2;
cout<<"\n\n//----------- 源文件为:"<<file1<<",目标文件为:"<<file2<<" ----------//";
fp1=fopen(file1,"r");
if(fp1==false){
cout<<"\n\n错误:找不到源文件\n\n";
return false;
}
fp2=fopen(file2,"w+");
if(fp2==false){
cout<<"\n\n错误:不能创建新文件\n\n";
return false;
}
max=getMax(fp1);
cout<<"\n\n> 转换开始"<<"\n\n该文件共有 "<<max<<" 个单词";
for(i=1;i<=max;++i){
getStrWord(fp1,i,‘+‘,str);
fputs(str,fp2);
fputs("\n \n",fp2);
getStrWord(fp1,i,‘&‘,str);
fputs(str,fp2);
fputs("\n",fp2);
for(j=0;j<(row-3);++j){
fputs(" \n",fp2);
}
getStrWord(fp1,i,‘\\‘,str);
fputs(str,fp2);
fputs("\n \n \n",fp2);
for(j=0;j<(row-3);++j){
fputs(" \n",fp2);
}
}
fputs("J.T.L\nwww.hartech.cn\n\n",fp2);
cout<<"\n\n> 转换完成";
fclose(fp1);
fclose(fp2);
return true;
}
// 用户界面
void interface_main(){
cout<<"\n\n ============================================\n";
cout<<" || 欢迎使用本转换软件: ||\n";
cout<<" || ||\n";
cout<<" || 1-批量文件转换 2-特定文件转换 ||\n";
cout<<" || 3-更改默认后缀 4-更改目标文件夹 ||\n";
cout<<" || 5-手机显示行数 6-退出 ||\n";
cout<<" || www.hartech.cn ||\n";
cout<<" ============================================\n\n";
cout<<"请选择要进行的操作:";
}
// 1-批量文件转换
void piliang(){
int num,i,cout_f=0;
char name1[20],name2[20];
cout<<"\n\n请输入文件数量(从1.txt开始到n.txt):";
cin>>num;
for(i=1;i<=num;i++){
if(i<10){
name1[0]=char(i)+48;
name1[1]=‘\0‘;
}else{
name1[0]=char(i/10)+48;
name1[1]=char(i%10)+48;
name1[2]=‘\0‘;
}
strcpy(name2,mulu);
strcat(name2,"/");
strcat(name2,name1);
strcat(name1,".txt");
strcat(name2,suffix);
if(!convertFile(name1,name2)){
cout_f++;
}
}
cout<<"\n\n\n批量转换完成。\n";
cout<<"转换成功文件: "<<(num-cout_f)<<" 个\n";
cout<<"转换失败文件: "<<cout_f<<" 个\n";
}
// 2-特定文件转换
void teding(){
char name1[20],name2[20];
cout<<"\n\n请输入源文件名:";
cin>>name1;
cout<<"\n请输入目标文件名:";
cin>>name2;
convertFile(name1,name2);
cout<<"\n特定文件转换完成。\n";
}
// 3-更改默认后缀
void changeSuffix(){
cout<<"\n\n现后缀为\""<<suffix<<"\",更改为:";
cin>>suffix;
cout<<"更改完成,现后缀为\""<<suffix<<"\"";
}
// 4-更改目标文件夹
void changeMulu(){
cout<<"\n\n现目标文件夹为\""<<mulu<<"\",更改为:";
cin>>mulu;
cout<<"更改完成,现目标文件夹为\""<<mulu<<"\"";
}
// 5-手机显示行数
void changeRow(){
do{
cout<<"\n\n现手机显示行数为\""<<row<<"\",更改为(行数要大于等于3):";
cin>>row;
}while(row<3);
cout<<"更改完成,现手机显示行数为\""<<row<<"\"";
}
void main(){
char kind;
// 默认后缀
do{
interface_main();
cin>>kind;
switch(kind){
case ‘1‘:piliang();
break;
case ‘2‘:teding();
break;
case ‘3‘:changeSuffix();
break;
case ‘4‘:changeMulu();
break;
case ‘5‘:changeRow();
break;
case ‘6‘:break;
default:cout<<"输入错误,请重新输入";
}
}while(kind!=‘6‘);
}
联系客服