私はCが初めてで、一度に1語ずつファイルを読み取る例をたくさん見ますが、テキスト行(実際にはファイル名のリスト)を指定して関数を作成しようとしています。一度に単語(ファイル名)。
例えば。この関数を words("file1.c file2.c file3.txt"); と呼びます。
そして、関数は各単語(ファイル名)を読み取り、それを別の関数に通す必要があります。
これまでのところ、私は持っています:
void words(char* line) {
char buf[100];
while (!feof(line)) {
fscanf(line,"%s",buf);
printf("current word %s \n", buf);
}
}
しかし、これはコンパイルされません。「互換性のないポインター型から 'feof' の引数 1 を渡しています」というメッセージが表示されます
編集これが私が思いついたコードです。words("test1 test2 test3 test4 "); で呼んだらうまくいきそうです。ただし、最後の文字がスペースでない場合、出力にエラーがあります。例 ("test1 test2 test3 test4");
char buf[100];
int word_length = 0;
int n;
while((sscanf(line + word_length,"%s",buf, &n)) == 1) {
printf("current word %s \n", buf);
word_length = word_length + strlen(buf) + 1;
}
私が間違っていることは何ですか?