【发布时间】:2019-08-16 20:25:41
【问题描述】:
我正在尝试在 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()回到文件的开头再读一遍。 -
添加文件后需要关闭文件或调用
fflush(),刷新输出缓冲区。 -
还要注意
fgetc()返回int,而不是char,因为EOF是一个不能用char值表示的值。
标签: c file read-write fgetc