【发布时间】:2019-02-05 06:10:59
【问题描述】:
所以我在想是否有一种方法可以显示一组输入的数据。所以我的示例程序是这样运行的:
用户输入姓名、性别和年龄。用户可以输入多个数据。但我想添加一个功能,用户将在其中输入姓名,然后显示姓名,以及相应的性别和年龄。但问题是,我不知道这样做。我听说过一个函数fseek(),但我认为它只是编辑值;例如,年龄或性别。
这是我的示例代码:
#include <stdio.h>
#include <stdlib.h>
struct clientName {
char name[30];
char gender[10];
};
struct clientAge {
int age;
};
void main() {
FILE *fp;
fp = fopen("data.txt", "ab");
struct clientName NAME;
struct clientAge AGE;
if(fp == NULL){
printf("Error");
getch();
} else {
system("cls");
printf("Enter Name: ");
gets(NAME.name);
printf("Enter Gender: ");
gets(NAME.gender);
printf("Enter Age: ");
scanf("%d", &AGE.age);
fwrite((char *)&NAME, sizeof(struct clientName), 1, fp);
fwrite((char *)&AGE, sizeof(struct clientAge), 1, fp);
printf("\n\nData Added");
fclose(fp);
}
system("cls");
fp = fopen("data.txt", "rb");
while((fread((char *)&NAME, sizeof(struct clientName), 1, fp)) == 1 & (fread((char *)&AGE, sizeof(struct clientAge), 1, fp)) == 1) {
printf("%s", NAME.name);
printf(" %s", NAME.gender);
printf(" %d y/o", AGE.age);
printf("\n");
}
fclose(fp);
}
【问题讨论】:
-
现在要学习的第一件事就是正确缩进代码。那是不可读的。第二个是删除所有这些
(char *)强制转换,它们只会使您的代码更加错误。 -
另外你的问题是你没有在写入之后关闭文件。
fclose(fp)在后者阅读之前。
标签: c file-handling