我有一个包含记录的二进制文件。该文件的结构如下:
结构(见下文) 名称字符串 地址字符串
有问题的结构:
typedef struct{
char * name;
char * address;
short addressLength, nameLength;
int phoneNumber;
}employeeRecord;
employeeRecord record;
我得到这样的名字:
char name[50];
printf("\nName:");
fgets(name,50,stdin);
record.nameLength = strlen(name)-1;
record.name = malloc(sizeof(char)*record.nameLength);
strcpy(record.name,name);
我写了结构,名字,然后是地址(如上所述)。
fwrite(&record.name,sizeof(char),record.nameLength,fp);
其中 fp 是文件指针。
现在我关闭文件。但是,如果我想从文件中读取以取回这些数据,我相信我需要读取结构,读取 nameLength 变量,malloc 足够的内存供名称放置,然后将名称读取到变量中。
像这样:
char *nameString = malloc(sizeof(char)*record.nameLength);
fread(nameString,sizeof(char),record.nameLength,fp);
printf("\nName: %s",nameString);
但是,当我尝试这样做时,我没有得到有效的数据。例子:
Input name is: Joseph (6 characters)
Output data:
Name length is 6 (correct),
Name is �A � (aka garbage)
所以很明显我做错了什么。有人可以给我一些帮助吗?