我需要编写一个程序来读取文件,然后将单词保存到链表中以供进一步使用。我决定使用 fgetc 逐个字符地读取文本,然后在每次检测到换行符 ( '\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
但是,除了打开和关闭的文件之外,我无法打印出任何内容。
谢谢。