【发布时间】:2021-01-17 14:24:54
【问题描述】:
我正在尝试从文件加载到结构中的特定字段。我对规范有很大的问题。我应该逐个加载符号还是只加载整个字符串?任何人都可以帮助我的规范吗?结构值包含位:5、5 和 11,它应该是这样的。我应该忽略第一个数字1. , 2. , 3.
编辑。如果是二进制文件呢?
输入文件:
1. John Snow, 05/06/1996 (0x00000000001f3cc1)⏎
2. Ethan Downey Jr., 14/02/1945 (0x00000000001e644e)⏎
...
10. ...
union unione{
unsigned long value;
struct {
unsigned char d : 5;
unsigned char m : 5;
unsigned short int y : 11;
}bit;
};
struct structure {
char name[21];
union unione bity;
char surname[31];
};
int readfile(const char* filename, struct structure* buffer, int size){
if (!fname || !buffer || size < 1) return 1;
FILE *f = fopen(filename, "r");
if(!f) return 2;
for(int i = 0; i < 10; i++) {
fscanf(f, "%*d. %s %s, %d/%d/%d (%x)", (*(buffer+i)).name, (*(buffer+i)).surname, (*(buffer+i)).bity.bit.d,
(*(buffer+i)).bity.bit.m, (*(buffer+i)).bity.bit.y, (*(buffer+i)).bity.value);
}
}
int main() {
struct structure data[10];
readfile("birthdays.bin", data, 10);
}
【问题讨论】: