私の仕事は、前のものの特定のシーケンスの後の単一の単語を省略することになっているプログラムを書くことです。私はすでに作業中の getword プロシージャを準備しました (戻り値char *
)。今は、次のコード スニペットがある main に問題があるだけです。これにより、どこで単語を削除する必要があるかを検出できます。しかし、出力ファイルからその単語を実際に省略/削除する方法がわかりません。
int main(int argc, char **argv)
{
FILE *infile = NULL, *outfile = NULL;
char *word = NULL;
int c;
int yes = 0;
int counter = 0;
/* completely irrelevant - opening, writing to files, error messages etc. */
while (1) {
c = fgetc(infile);
word = getword(infile);
if (counter == 2) {
counter = 0;
yes = 0;
/* here it should somehow omit the word */
continue;
}
if (choose(word, strlen(word))) {
fputs(word, outfile);
counter++;
yes = 1;
} else {
fputs(word, outfile);
if (yes == 1) {
counter--;
}
}
free(word);
}
/* completely irrelevant */
}
編集:明確にするために追加
「getword は単語を読み取るだけで、探している単語であるかどうかのチェックは実行しません。main() がそのチェックを行います。if (選択) が満たされると、単語に一連の文字 I が含まれていることを意味します。 ''' を探しています, そしてその特定の単語の後の 2 番目の単語は省略されるべきです. 変数 "counter" と "yes" は完璧なアルゴリズムではないかもしれません. 「Counter」は、省略される単語を決定するために 2 までカウントし、「yes」は、if (choose)
条件を満たさない単語に移動した後にカウンターをインクリメントするのに役立ちます。
前もって感謝します!