replace oldfile newfile oldword newword<回车>
命令如上 把旧文件中的旧单词替换成新单词 然后输入到新文件中去。我的问题是程序会一直往新文件里面打印字符串不会停止。
代码如下,希望有大大可以帮我解答一下。谢谢啦!
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 void main(int argc,char *argv[]) 5 { 6 int ischar(FILE *in,char *a);//用来判断从此处开始是否有单词和要替换的匹配 7 FILE *in,*out; 8 char *o,*n;//o是老单词,n是新单词 9 if(argc!=5) 10 { 11 printf("参数不对!\n"); 12 exit(0); 13 } 14 if((in=fopen(argv[1],"r"))==NULL) 15 { 16 printf("指定文件有错!\n"); 17 exit(0); 18 } 19 if((out=fopen(argv[2],"w"))==NULL) 20 { 21 printf("新文件打开有错!\n"); 22 exit(0); 23 } 24 printf("success"); 25 o=argv[3];//要被替换的单词 26 n=argv[4];//要用来替换的新单词 27 while(!feof(in)) 28 { 29 30 if(ischar(in,o)) 31 { 32 fputs(n,out); 33 } 34 else 35 { 36 fputc(fgetc(in),out); 37 } 38 39 } 40 41 } 42 int ischar(FILE *in,char *a)//判断从此处开始是否有单词和要替换的匹配 43 { 44 int n=strlen(a),x; 45 char b[20];//得到一个字符串进行比较 46 fgets(b,n+1,in);//这个时候in的指针已经往后移了n+1个了 47 x=(int)strlen(b); 48 if(x<0) return 0; 49 if(strcmp(b,a)==0) 50 { 51 printf("1");//为了方便分析 52 return 1; 53 } 54 else 55 { 56 fseek(in,-x,1);//指针移回去 57 printf("%d\n",x);//为了方便分析 58 return 0; 59 } 60 }