0

基本的に、私はCで小さなプログラムに取り組んでいます(これも宿題ではなく、Uniから離れている間の実験です:))。私の目標は、すべてスペースで区切られた多くの単語を含むファイルを取得し、ファイルをループして、スペースが見つかったら、それを\ nに置き換えて、単語の大きなリストを作成することです。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
/*
 * 
*/
int main(int argc, char** argv) {

char myFile[100];
int i;
FILE *file;
while(argc--) {
    printf("%s\n", *argv++);
}

return 0;
}

私がこれまでに持っている非常に基本的なことですが、次に行う必要があるのは、引数を取り、myFile配列でそれを叩いて、それをfopenとして使用できるようにすることです。または、これを行う別の方法がありますか?

それを超えて、私のアイデアは、fgetsを介して行を配列に読み込み、charごとにループして''を検索し、見つかった場合は\ nを置き換え、その行をファイルに書き換えることでした。これは賢明で実行可能に聞こえますか?

よろしく、

ありがとう!

4

2 に答える 2

3

最も簡単な方法は、ファイルをバイナリモードで開くことです。

FILE *fpIn = fopen( argv[1], "rb" );

次に、書き込み用に新しいファイルを開きます

FILE* fpOut =  fopen( "tmp.out", "wb" );

fgetcを使用してfpInからバイトごとに読み取り、fputcを使用して新しいファイルに書き込みます

書き込む前に、バイトがスペースであるかどうかを確認し(を使用isspace())、代わりに'\n'を書き込みます。

次に、元のファイルを削除して、名前をに変更tmp.outしますargv[1]

于 2011-12-27T18:31:24.617 に答える
0

これは、K&R演習1-12で求められていることとほぼ同じです(ファイルポインタをスキップする場合は、入力ファイルを標準入力に交互にリダイレクトできます)。それは良い運動です。

参考までに、K&Rソリューションの優れたリソース:http: //clc-wiki.net/wiki/K&R2_solutions

于 2011-12-27T20:44:21.427 に答える