gpt4 book ai didi

c - 如何用 C 编程语言将随机访问文件中的记录放入数组中?

转载 作者:行者123 更新时间:2023-11-30 16:05:13 26 4
gpt4 key购买 nike

如何将随机访问文件 DATA.data 中的记录放入数组 allRecs[10] 中?

/*Reading a random access file and put records into an array*/
#include <stdio.h>

/* somestruct structure definition */
struct somestruct{
char namn[20];
int artNr;
}; /*end structure somestructure*/

int main (void) {
int i = 0;
FILE *file; /* DATA.dat file pointer */
/* create data with default information */
struct somestruct rec = {"", 0};
struct somestruct allRecs[10]; /*here we can store all the records from the file*/
/* opens the file; exits it file cannot be opened */
if((file = fopen( "DATA.dat", "rb")) == NULL) {
printf("File couldn't be opened\n");
}
else {
printf("%-16s%-6s\n", "Name", "Number");
/* read all records from file (until eof) */
while ( !feof( file) ) {
fread(&rec, sizeof(struct somestruct), 1, file);
/* display record */
printf("%-16s%-6d\n", rec.namn, rec.artNr);
allRecs[i].namn = /* HOW TO PUT NAME FOR THIS RECORD IN THE STRUCTARRAY allRecs? */
allRecs[i].artNr = /* HOW TO PUT NUMBER FOR THIS RECORD IN THE STRUCTARRAY allRecs? */
i++;
}/* end while*/
fclose(file); /* close the file*/
}/* end else */
return 0;
}/* end main */

最佳答案

我立即想到了两种方法。首先,您可以简单地分配,如下所示:

allRecs[i] = rec;

但是,从您的代码来看,您甚至不需要它 - 您可以直接在适当的元素中读取:

fread(&allRecs[i], sizeof(struct somestruct), 1, file);
/* display record */
printf("%-16s%-6d\n", allRecs[i].namn, allRecs[i].artNr);
i++;

顺便问一下 - 您确定该文件永远不会包含超过 10 条记录吗?因为如果这样做的话,你会遇到很多麻烦......

关于c - 如何用 C 编程语言将随机访问文件中的记录放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722241/

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