- 締切済み
文字列をファイルから検索する
gsdhkfghsdbfdbnsjkfndjsandfjaghfdsafdsafdsag dbsahfgjaf fdjashfjdnsajfndjbreakfdjsabdhkasb dslihfldsajfkldjsaklfndgbhfbrnsajkgbnfdjkanfjdn sdhfjkhskagfeabrrfajkgkjdshfjhjlsagnfrjsergnre fkdhsalkjdfjsabngkrehgufjkdsngjkeshgkjernsjklgn idslfgdhsajkghbrkeubhgjkdbnsjgfndjsngrjklnfjl inportantjldsghdfksghnjkdfnjfnhlsdghnlrjensgl jshdfbnjkgnbfdjksgjkfdjskgnfjkdsngjkfnsdjgnfkls dbksafbgdskafdjksaf important gyjkgbjkbkjbfgyjbuk jkhbjkbnfsdkjzfbvdkszbkdjsbfdks ifkldsgjkfnsal klfjszdklgfdklsgn kfjagklf gkorhjsglfnsl o;sjag;ra kflhgsglfjnglfdnsgklirejsigjrtklesgkrtm kfjsdglkjklsdgg lf;jgr;ejsig;lrnesigrtjniesjgesgi ↑「ser.txt」 今、ファイル操作を勉強しているんですけどこの問題がどうしても解けません上の文字列から「important」という文字列を検索して見つかったその場所を「111111111」に置き換えたいんですけど本当にわかりません fseekっていうのを使うと思うんですけど・・・・ #include< stdio.h> #include< stdlib.h> void main(){ FILE *fp; char a[]={"important"}; int i,j; if((fp=fopen("ser.txt","r+"))==NULL){ printf("error\n"); exit(1); } ??? ここからがわかりませんTT
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- salsberry
- ベストアンサー率69% (495/711)
では敢えて、とっても効率の悪い実装例を。 a. fopen()でser.txtを開く b. ファイルの読み出し位置をfseek()でセットする。1周目はser.txtの1文字目("g"の字)、2周目は2文字目("s"の字)…のように c. "important"という文字列はの長さは9バイトなので、fread()を使って9バイト読み出す d. cで読み込んだデータの長さが9バイトに満たなかったら、これ以上検索しても無駄なのでfclose()でser.txtを閉じて終了 e. cで読み込んだデータが"important"という文字列と一致しているかどうかをチェック、もし一致していなかったらbへ戻る f. 目的の文字列が見つかったので、先ほどcでデータを読み出した位置を今度はファイルの書き込み位置にセットする g. fwrite()で置き換える文字列を書き込む h. bへ戻る
- salsberry
- ベストアンサー率69% (495/711)
ser.txtの内容がファイルではなくメモリ内にあったとして、文字列を見つけてメモリ内で置換する方法は分かりますか? あとついでに、void main()はお勧めしません。言語仕様的にはint main(void)とすべきです。
補足
メモリ内というのはどういうことですか・・・すいません馬鹿なもので void main()はint main(void)にしたほうがいいんですね ありがとうございます