int Replaceword (unsigned int size, const char *skeyword,
const char *reword, const char *cfp, const char *cnewfp)
{
char ckw[size];
unsigned int uikwlen=strlen(skeyword)+1;
int i=0; // 偏移量
FILE *fp=fopen(cfp,"r");
FILE *newfp=fopen(cnewfp,"w+");
char check=0;
//找尋keyword的位置
for(i=1;fgets(ckw,uikwlen,fp)!=NULL;i++)
{ //printf("ckw=%s\n",ckw);
if(strcmp(ckw,skeyword) == 0)
{
printf("fine_keyword=%s\n",ckw);
check=1; // Found
break;
}
rewind(fp);
if(ckw[0]=='\n') //為了在字串結尾只有一個\n
i++;
fseek(fp,i,SEEK_SET);
fprintf(newfp,"%c",ckw[0]);
}
if (!check)
return 0;
//取代字串
fclose(newfp);
newfp=fopen(cnewfp,"a+");
fprintf(newfp,"%s",reword);
//寫入剩下的字串
fclose(newfp);
newfp=fopen(cnewfp,"a+");
i=i+uikwlen-2; //為何減2,減1 是為了\n,另一個減 1 是...?
fseek(fp,i,SEEK_SET);
for(i=i+1;fgets(ckw,uikwlen,fp)!=NULL;i++)
{
//printf("ckw=%s\n",ckw);
rewind(fp);
if(ckw[0]=='\n') //為了在字串結尾只有一個\n
i++;
fseek(fp,i,SEEK_SET);
fprintf(newfp,"%c",ckw[0]);
}
fclose(newfp);
fclose(fp);
return check;
}
int main ()
{
int a=0;
const char *fp="C:\\file.txt";
const char *newfp="C:\\newfile.txt";
int i;
a=Replaceword (20,"Ver","VID=VEN_909",fp,newfp);
printf("a=%d\n",a);
system("pause");
return 0;
}
2009年4月13日 星期一
在檔案裡搜尋字串並取代
在檔案裡搜尋字串並取代 ( 只能搜尋取代一次,無法整篇文章取代 )
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言