電子書籍の厳選無料作品が豊富!

ファイルを置換するプログラムを作ったのですがうまく置換してくれません。コードは以下のように書きました。(コンパイラは出来ました)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define FALSE 0
#define TRUE 1

main()
{
FILE *fp;
char filename[256];
FILE *outfp;
char outfilename[256];

char key[128];
char str[128];

char c;
int p;
int keylen;
int i=0 ;
int search=FALSE;
int count =0;

printf(" enter filename");
scanf("%s",filename);
printf("seach word");
scanf("%s",key);
keylen=strlen(key);

printf("change word");
scanf("%s",str);

if((fp=fopen(filename,"r"))==NULL)
{
printf("file open error");
exit(1);
}

strcpy(outfilename,filename);
strcat(outfilename,"_");
if((outfp=fopen(outfilename,"w"))==NULL)
{
printf("file open error");
exit(1);
}

while((c=fgetc(fp))!=EOF)
{
if(search)
{
if(c != key[i])
{
search=FALSE;

for(p=0;p<i;p++)
{
fputc(key[p],outfp);
}
fputc(c,outfp);
i=0;
}
else{i++;}
}

else
{
if(c==key[i])
{search=TRUE;i++;}
else {fputc(c,outfp);}
}


if (keylen==i)
{
count++;
fputs(str,outfp);
search=FALSE;
i=0;
}
}

fclose(fp);
fclose(outfp);
printf("apperance number %d\n",count);

return 0;
}
どこか間違っていますか?教えてください。

A 回答 (5件)

少なくともテキストファイルでは動きますね。


ワードとかのファイルはテキストじゃないので動かなくて当然でしょうし。

#蛇足
printf(" enter filename");
scanf("%s",filename);
だと、text.txtと言うファイルを読むときに
filenametext.txtというふうになってしまい見目よろしくないので、
printf(" enter filename > ");や
printf(" enter filename\n");などとしたほうがいいと思います。
他のprintf-scanfも同様。
    • good
    • 0

少なくともテキストファイルでは動きますね。


ワードとかのファイルはテキストじゃないので動かなくて当然でしょうし。

#蛇足
printf(" enter filename");
scanf("%s",filename);
だと、text.txtと言うファイルを読むときに
filenametext.txtというふうになってしまい見目よろしくないので、
printf(" enter filename > ");や
printf(" enter filename\n");などとしたほうがいいと思います。
他のprintf-scanfも同様。

この回答への補足

すみません。初歩的な間違いをしていました。買えたら何とか動かすことが出来ました。ほかにもこの質問に答えて下さった方、変な質問ですいませんでした。

補足日時:2006/01/24 11:48
    • good
    • 0

うまくいかないケースを補足してもらえませんか

    • good
    • 0

ところで、


扱っているファイルは
テキストファイルですか
バイナリファイルですか
それとも、
ワードのデータや
エクセルのデータのようなものですか
どちらにしても、
バイナリファイルとして扱い
一文字ずつ写してゆく
方が安心だと思うのですが
いかがでしょうか?
    • good
    • 0

プログラム上は問題ないように思われるのですが



どのように、うまくいかないのでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!