将数据存储到充满指针的结构中

时间:2012-11-19 07:32:10

标签: c pointers struct malloc

我有一个程序正在读取文件,但没有保存到结构中。读取数据后,应将其保存在结构中,以便程序以后能够使用所述数据。我有一点时间搞清楚如何完成这件事。

结构

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);

  }  

}

可根据需要提供更多信息。我只想弄清楚为什么信息不能在结构中保存,以便以后可以调用。

2 个答案:

答案 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()