OK、私は C でスペルチェック プログラムに取り組んでいます。ちょっと困っているのは、システム辞書からプログラムに単語を読み込むことです。私は答えを探しましたが、おそらくこれはかなり初歩的なことであるために、まったく正しいものを見つけることができませんでした. これが私がこれまでに得たコードです。
void readWord(FILE * stream, int buffer[]){
15
16 while(fgetc(stream) != 10){
17 buffer[i] = fgetc(stream);
18 printf("copying %d to buffer\n", buffer[i]); //added for debugging
19 }
20 return;
21 }
呼び出しとともに関数呼び出しで使用される変数は次のとおりです。
int buffer[WIZE];
readWord(dictionary, buffer, WSIZE);
辞書は /usr/share/dict/words を指しており、正しく開くことを確認するコードがありますが、この質問には入れませんでした。結局それが問題なのかもしれません。これは Aarhus を出力するはずですが、代わりに次のように出力します。
Dictionary opened successfully
copying 97 to buffer
copying 104 to buffer
copying 115 to buffer
プログラムが 16 行目を実行するたびに、ファイルの位置が次の文字に更新されるのではないかと思っています。ポインタが 2 番目の文字から始まる場合、出力は Aarhus の 1 文字おきに表示されます。
readWord 関数は、チェックするテキスト ファイルから個々の単語を読み取るためにも使用されます。これが、getline を使用しなかった理由です。終端のヌル文字とともにバッファを文字列にフラッシュして表示する関数は他にもあります。これは、ファイルから一度に 1 つの単語を取得する処理を行うビットです。