首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

A、B文件中的字符串替换有关问题 60分. -刚才结错帖了,重来

2012-02-22 
A、B文件中的字符串替换问题 60分. --刚才结错帖了,重来.毕业后没从事IT这一行,搞建筑^@^所学的全还给老师

A、B文件中的字符串替换问题 60分. --刚才结错帖了,重来.
毕业后没从事IT这一行,搞建筑^@^所学的全还给老师了....最近工作中碰到一个问题,如下:

我在A.html文件里有100个相同的字符串:123456(处于A文件的不同位置);想替换为:147258,369258,789456,125879,364589,131313.....(这100个字符串处于文件B.TXT,有序,每个字符串占一行或者用豆号/分号分开).   求翻翻书能看懂直接执行的完整源程序.QQ:6773784
mail:eoyveoy@gmail.com
谢谢!
   
aaron85()   (   )   信誉:100         Blog     2007-3-31   13:55:31     得分:   60    
 
 
     
刚才点错了,还没弄好就发送了。
#include <stdio.h>
#inclded <string.h>

#define   MAX_LINE   100     //A.html中每行的最大字符数,可以自己设

void   main()
{
        int   i,k=0;
        char   *a= "123456 ",b[100][7],line[MAX_LINE],*p;
        FILE   *fp1,*fp2;
        fp1=fopen( "B.TXT ", "r ");
        for(i=0;i <100;i++){
                fgets(b[i],6,fp1);
        }
        fclose(fp1);
        fp1=fopen( "A.html ", "r ");
        fp2=fopen( "B.html ", "w ");
        while(1){
              fgets(line,MAX_LINE,fp1);
              p=strstr(line,a);
              do{
                          for(i=0;i <7;i++){
                                  p[i]=b[k][i];
                          }
                      p=strstr(p,a);
              }while(p);
              fputs(line,fp2);
              if(feof(fp1))   break;
        }
        fclose(fp1);
        fclose(fp2);
}
我没有试过这个程序能不能正常运行,不过大概的思路可以是这样。省略了所有的出错处理,另外还有一个问题,因为是一行一行读取,如果123456分别在两行里面,还要进行额外的处理。处理后的文件保存为“B.html”.

   
  aaron85()   (   )   信誉:100         Blog     2007-3-31   13:57:34     得分:   0    
 
 
     
没注意看,将p[i]=b[k][i];改成p[i]=b[k++][i];

   
 
  Linnis(阿惑)   (   )   信誉:100         Blog     2007-3-31   14:03:31     得分:   0    
 
 
     
如果B.TXT文件里是小于20个汉字的字符呢?

   
 
  aaron85()   (   )   信誉:100         Blog     2007-3-31   14:07:31     得分:   0    
 
 
     
什么意思,就是每个被替换成的字符串可能是长度不等的?

   
 
  Linnis(阿惑)   (   )   信誉:100         Blog     2007-3-31   14:16:00     得分:   0    
 
 
     
对,每个被替换的字符串可能长度不等,是小于20个汉字的字符串,每个字符串也是独占一行.


比如说:
              1513745元.
              嗯,很好,谢谢!
              同意,转交办公室.
              请把可行性报告交到113办公室,急!


   
 



[解决办法]
我是在vc6.0下运行的,没有问题。(tc下不支持超过3位的文件扩展名,文件操作可能会有错误)
最后的完整程序如下:

#include <stdio.h>
#include <string.h>

void main()
{
char c,buf[40],s[6];
FILE *fp1,*fp2,*fp3;
fp1=fopen( "A.html ", "r ");
fp2=fopen( "B.TXT ", "r ");
fp3=fopen( "B.html ", "w ");
c=fgetc(fp1);
while(c!=EOF){
if(c== '1 '){
fread(s,1,5,fp1);
if(strncmp(s, "23456 ",5)){
fputc(c,fp3);
fputs(s,fp3);
}else{
fgets(buf,40,fp2);
buf[strlen(buf)-1]= '\0 ';
fputs(buf,fp3);
}
}else{
fputc(c,fp3);
}
c=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
}

热点排行