ファイルを読み込んで、各文字を配列に追加しています。次に、スペースやその他の重要でない文字を削除して、これらの文字を単語に分解します。ここで、各単語を個別に操作するために、各単語を独自の配列に追加したいと思います。これを行う方法はありますか?各単語の先頭のメモリ位置を追加しようとしましたが、配列の先頭のメモリ アドレスが引き続き表示されます。問題は、以下のコードでは、「buffer」という名前の変数が、while ループの反復ごとに新しい単語で上書きされることです。リンクされたリストにプッシュするには、各単語を参照できる必要があります。これが私がこれまでに持っているものです:
#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv) {
char buffer[1024];
int c;
size_t n = 0;
FILE *pFile = stdin;
pFile = fopen(argv[1], "r");
if (pFile == NULL) perror("Error opening file");
else {
while(( c = fgetc(pFile)) != EOF ) {
if (isspace(c) || ispunct(c)) {
if (n > 0) {
buffer[n] = 0;
printf("read word %s\n", buffer);
n = 0;
}
} else {
buffer[n++] = c;
}
}
if (n > 0) {
buffer[n] = 0;
printf("read word %s\n", buffer);
}
fclose(pFile);
}
return 0;
}
「これは、この演習の単語を保持するテスト ドキュメントです」という文字を含むファイルを指定すると、次のようになります。
read word This
read word is
read word a
read word test
read word document
read word that
read word holds
read word words
read word for
read word this
read word exercise