很多人都在苦苦挣扎。我正在尝试将文件读入结构数组,每行被拆分为结构的两个字符串属性。这是我尝试过的。
#include <stdio.h>
#define KEYSIZE 8
#define DATASIZE 56
struct Record {
char key[KEYSIZE];
char data[DATASIZE];
};
int main(int argc, char **argv[])
{
if (argc!=2)
{
printf("Please enter a file name");
return 0;
}
FILE *recordFile=fopen(argv[1], "r");
char ch;
int lines =0;
fseek(recordFile, 0, SEEK_END);
lines = ftell(recordFile);
fseek(recordFile, 0, SEEK_SET);
lines=lines/64;
struct Record recArr[lines];
char buffer[9];
char buffer2[57];
fgets(buffer, 9, recordFile);
for(int i=0;i<8;i++)
{
recArr[0].key[i]=buffer[i];
}
fgets(buffer2, 57, recordFile);
for(int i=0;i<57;i++)
{
recArr[0].data[i]=buffer2[i];
}
}
请注意,我只是编辑数组的第一个成员以进行测试。我当前的实现为我获取了data属性的正确结果,但是key属性变成了整行,这是我无法弄清楚的。只有在我编辑数据属性时才会发生这种情况。如果删除编辑数据属性的部分,则键属性会正确显示该行的前8个字符。