![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?e8efa67)
ファイルを置換するプログラムを作ったのですがうまく置換してくれません。コードは以下のように書きました。(コンパイラは出来ました)
#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件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
少なくともテキストファイルでは動きますね。
ワードとかのファイルはテキストじゃないので動かなくて当然でしょうし。
#蛇足
printf(" enter filename");
scanf("%s",filename);
だと、text.txtと言うファイルを読むときに
filenametext.txtというふうになってしまい見目よろしくないので、
printf(" enter filename > ");や
printf(" enter filename\n");などとしたほうがいいと思います。
他のprintf-scanfも同様。
No.4
- 回答日時:
少なくともテキストファイルでは動きますね。
ワードとかのファイルはテキストじゃないので動かなくて当然でしょうし。
#蛇足
printf(" enter filename");
scanf("%s",filename);
だと、text.txtと言うファイルを読むときに
filenametext.txtというふうになってしまい見目よろしくないので、
printf(" enter filename > ");や
printf(" enter filename\n");などとしたほうがいいと思います。
他のprintf-scanfも同様。
この回答への補足
すみません。初歩的な間違いをしていました。買えたら何とか動かすことが出来ました。ほかにもこの質問に答えて下さった方、変な質問ですいませんでした。
補足日時:2006/01/24 11:48No.2
- 回答日時:
ところで、
扱っているファイルは
テキストファイルですか
バイナリファイルですか
それとも、
ワードのデータや
エクセルのデータのようなものですか
どちらにしても、
バイナリファイルとして扱い
一文字ずつ写してゆく
方が安心だと思うのですが
いかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
printf による16進表示について
-
C言語のプログラムで、途中で止...
-
char型2つを結合し、short型に...
-
C言語で複数列のデータを1列の...
-
なぜ無限ループになるかが分か...
-
#defineが使用するメモリ領域に...
-
ファイルの置換
-
【C言語】全角文字の配列を、全...
-
空白を含んだ文字列がうまく格...
-
fwrite処理について
-
構造体メンバの初期化
-
セグメンテーションエラーの原...
-
Ç言語でファイルサイズを変更す...
-
「指定されたキャストは有効で...
-
マイナスからプラスへ転じた時...
-
DWORDの実際の型は何でしょうか
-
信頼区間の1.96や1.65ってどこ...
-
CStringのFindで文字列検索を行...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
printf による16進表示について
-
C言語のプログラムで、途中で止...
-
char型2つを結合し、short型に...
-
矢印キーを押下してコンソール...
-
#defineが使用するメモリ領域に...
-
【C言語】全角文字の配列を、全...
-
終了条件Ctrl+zについて,結果表...
-
空白を含んだ文字列がうまく格...
-
プログラミングの授業の課題です
-
リストの作成と出力(C言語)
-
c言語で文書を読み込み、単語の...
-
構造体メンバの初期化
-
エラーについて質問です。
-
reallocでエラー
-
C言語でのCSVファイルの読み出...
-
なぜ無限ループになるかが分か...
-
Cプログラムについて
-
C++で指定文字列のカウント方法...
おすすめ情報