1

我有这个:

typedef struct nodebase{
  char name[254];
  char sex;
  int  clientnum;
  int  cellphone;
  struct nodebase *next;
  struct nodebase *encoding;
} clientdata;

我已经添加clientdata *curr[];了单独的功能。*curr我改成的原因*curr[]是这个客户端数据将存储在一个.txt文件中。所以我想出了单链表来读取所有数据,当程序fscanf每 5 个变量时,我将 1 添加到clientcounter.

所以,*curr[]将是*curr[clientcounter]

现在,我需要将此指针数组转换为名为temp[clientcounter]的 char 数组,因为需要 char 数组来评估代码中的其他内容。

我想出了下面的代码:(在 Windows 上使用 Tiny C)

void loaded_data_transfer(clientdata *curr,clientdata temp[],int clientcounter)
{
clientdata temp[] = {0};

temp[clientcounter].name = curr[clientcounter]->name;
temp[clientcounter].sex = curr[clientcounter]->sex;
temp[clientcounter].clientnum = curr[clientcounter]->clientnum;
temp[clientcounter].cellphone = curr[clientcounter]->cellphone;

}

问题是,Tiny C 给了我一个错误:lvalue expected部分temp[clientcounter.name = ...。谁能告诉我我做错了什么?

curr如果有人知道通过使用计数器和使用单链表来跟踪客户数据的更好方法,请告诉我。

4

3 回答 3

2

您不能将数组分配给另一个数组。您应该使用 strcpy 或 strncpy

strcpy(temp[clientcounter].name, curr[clientcounter]->name);
于 2013-10-02T10:55:53.727 回答
1

也许您打算复制整个结构:

void loaded_data_transfer(clientdata * curr, clientdata temp[], int clientcounter)
{
    temp[clientcounter] = *curr; // Copy entire struct
}

它应该可以工作,因为您的结构没有任何指针成员。

我假设你像这样使用它

clientdata * curr[CURR_SIZE];
clientdata temp[TEMP_SIZE];
/* init curr elements here */
loaded_data_transfer(*curr[clientcounter], temp, clientcounter);
于 2013-10-02T11:08:18.263 回答
0

此外,您的声明应该是:

void loaded_data_transfer(clientdata *curr[],...
于 2013-10-02T11:02:43.077 回答