gpt4 book ai didi

c - C 中使用 fread 和 fwrite 进行 block 读写

转载 作者:行者123 更新时间:2023-11-30 19:29:08 24 4
gpt4 key购买 nike

我试图从用户那里读取员工信息并使用 fwrite() 函数将其输入到文件中,稍后我想使用 fread() 从文件中读取数据然后打印屏幕上的数据内容。当我在程序中时,这个过程工作得很好,但是在程序退出并且我访问存储信息的文件后,我看到不可读的字符,但在程序中它们被打印为正常的英文字符和数字。这是我的代码:

#include<stdio.h>

struct emp{
int id;
char name[30];
double salary;
}S;

void main(){
char fname[60];
printf("Enter file name: ");
scanf("%s", fname);

FILE *fptr = fopen(fname, "a+"); // open file in append + mode, create if not found.

if(fptr == NULL){
printf("Some error occured !\n");
return;
}

int i, size;
printf("Enter the number of employees whose information is needed to be added to the file: ");
scanf("%d", &size);

// writing

for(i = 0 ; i < size ; i++){
printf("Employee %d:\n", i+1);
printf("Enter id: ");
scanf("%d", &S.id);

printf("Enter name: ");
while(getchar() != '\n'); // clear buffer
scanf("%s", S.name);

printf("Enter salary: ");
scanf("%lf", &S.salary);

fwrite(&S, sizeof(struct emp), 1, fptr);
printf("----------------------------------------\n");
}

rewind(fptr); // move pointer to first record in file

// reading
printf("File contents: \n");

printf("ID\t\tNAME\t\tSALARY\n");

while(fread(&S, sizeof(struct emp), 1, fptr) != 0){
printf("%d\t\t%s\t\t%lf\n", S.id, S.name, S.salary);
}
}

这是我想要解释的内容的图片。 enter image description here

最佳答案

您正在将结构写入文件,而不是单独打印其内容。当您读回它时它可以工作,但是当您打开文件时,它根本不知道它是什么(您有 intchar*double 在你的结构中。

如果您想在文件上可视化它,您需要单独打印结构体的每个术语,并以相同的方式读回它,以便在屏幕上看到它。

关于c - C 中使用 fread 和 fwrite 进行 block 读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com