ファイルから読み取るプログラムを作成し、さらに使用するために単語をリンクされたリストに保存する必要があります。fgetc を使用してテキストを 1 文字ずつ読み取り、 1 つの単語を示す改行 ( '\n'
) またはスペース ( ) が検出されるたびにすべてをリストに保存することにしました。' '
申し訳ありませんが、私はファイルポインタの初心者です。これは私がこれまでに得たものです:
struct list { //global
char string[30];
struct list *next;
};
int main(void) {
FILE *filePtr;
char file[] = "text.txt";
char tempStr[30];
list *curr, *header;
char c;
int i = 0;
curr = NULL;
header = NULL;
if((filePtr = fopen(file, "r")) == NULL) {
printf("\nError opening file!");
getchar();
exit(101);
}
printf("\nFile is opened for reading.\n");
while(!EOF) {
while((c = fgetc(filePtr) != ' ') && (c = fgetc(filePtr) != '\n')) {
curr = (list*)malloc(sizeof(list));
//c = fgetc(filePtr);
tempStr[i] = fgetc(filePtr);
i++;
}
tempStr[i] = '\0';
strcpy(curr->string, tempStr);
curr->next = header;
header = curr;
i = 0;
}
while(curr!=NULL) {
printf("%s - ", curr->string); //This will not print.
curr = curr->next;
}
if(fclose(filePtr) == EOF) {
printf("\nError closing file!");
getchar();
exit(102);
}
printf("\nFile is closed.\n");
getchar();
getchar();
}
テキスト ファイルの場合:
have a nice day
望ましい出力:
have - a - nice - day
しかし、開いたファイルと閉じたファイル以外は何も印刷できませんでした。
ありがとう。