1

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

结构体

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

  }  

}

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

4

2 回答 2

4

什么是“朋友”?全局变量?
什么是“联系人”?它不在函数中使用。
你可以把它们混合起来吗?

BUFFSIZE * strlen(buffer)-> 你什么意思?你分配strlen(buffer) BUFFSIZE时间。可能应该是sizeof(char) * strlen(buffer)

我还认为您应该在操作后检查“缓冲区”的长度fscanf

于 2012-11-19T08:01:05.373 回答
0

您用于为 char 数组分配空间然后复制到它的代码是有意义的,但是在您的while()循环中可能会发生以下两种情况之一:立即评估条件,false因此不会复制任何内容,或者您​​一遍又一遍地迭代,直到 fscanf 写入一个空字符串来缓冲,这会覆盖 的内容friends[*counter].First_Name,你应该*counter在 的正文中增加while()吗?

于 2012-11-19T07:55:35.380 回答