我正在尝试用 C 编写一个简单的待办事项列表,但读取选项仅在第一次运行时显示正确的信息。如果我添加一个新项目,那么我需要关闭并再次打开程序以显示更新后的列表。
添加选项工作正常,删除选项尚未实现。
#include <stdio.h>
int main (void) {
int opt = 1;
char task[50];
char add[50];
char read;
FILE *p, *q;
printf("\n===To-do List Simple Application===\n");
printf("Choose an Option:\n");
do {
printf("1- Show List\n");
printf("2- Add an item\n");
printf("3- Delete an item\n");
printf("0- Exit\n");
scanf("%d" ,&opt);
switch(opt){
case 1:
q = fopen("list.txt", "r");
printf("\n\n==================\n");
read = fgetc(q);
while (read != EOF){
printf("%c" ,read);
read = fgetc(q);
}
printf("%s \n", task);
printf("\n==================\n\n");
break;
case 2:
p = fopen("list.txt", "a");
printf("\n\n==================\n");
printf("Inform the item to be added:\n");
scanf("%s" ,add);
fprintf(p, "\n%s",add);
printf("\n==================\n\n");
break;
case 3:
printf("\n\n==================\n");
printf("delete\n");
printf("\n==================\n\n");
break;
case 0:
printf("\n\n==================\n");
printf("exit\n");
printf("\n==================\n\n");
break;
}
}while (opt!=0);
return 0;
}
最佳答案
您可以使用 fseek(file, 0, SEEK_SET)
或 rewind(file)
再次开始从文件开头读取/写入。
请注意,如果您以追加模式打开文件,这些基本上什么都不做;所有写入仍将强制到文件末尾。
但是,这些不会修复您的代码。完成写入或读取文件后,您需要关闭文件。
除此之外,您正在使用未初始化的 task
。在开始使用它解决此问题之前对其进行初始化或检查它是否已初始化。
关于c - 如何在C中多次读取文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530723/