我有一个程序正在读取文件,但没有保存到结构中。读取数据后,应将其保存在结构中,以便程序以后能够使用所述数据。我有一点时间搞清楚如何完成这件事。
结构
typedef struct friends_contact {
char *First_Name;
char *Last_Name;
char *home_phone;
char *cell_phone;
} fr;
阅读文件
void ReadFile(fr *friends, int *counter, char buffer[], FILE *read) {
fseek(read, 0, SEEK_SET);
while (fscanf(read, "%s", buffer) != EOF) {
friends[*counter].First_Name = malloc(BUFFSIZE * strlen(buffer));
strcpy(friends[*counter].First_Name, buffer);
}
}
可根据需要提供更多信息。我只想弄清楚为什么信息不能在结构中保存,以便以后可以调用。
答案 0 :(得分:4)
什么是“朋友”?全局变量?
什么是“联系人”?它不用于功能。
可能是你混在一起吗?
BUFFSIZE * strlen(buffer)
- >你什么意思?您分配strlen(buffer)
BUFFSIZE
次。
可能应该是sizeof(char) * strlen(buffer)
?
我还认为你应该在操作fscanf
之后检查“缓冲区”的长度。
答案 1 :(得分:0)
用于为char数组分配空间然后复制到它的代码是有意义的,但在while()
周期中可能会发生以下两种情况之一:条件立即评估到false
所以没有被复制或你反复迭代,直到fscanf将空字符串写入缓冲区并覆盖friends[*counter].First_Name
的内容,如果你在*counter
的正文中增加while()
?