如何将指针数组转换为char数组?

时间:2013-10-02 10:50:49

标签: c arrays pointers

我有这个:

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}加1。

因此,clientcounter将是*curr[]

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

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

temp[clientcounter]

问题是,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; } 部分给我一个错误:lvalue expected。谁能告诉我,我做错了什么?

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

3 个答案:

答案 0 :(得分:2)

您无法将阵列分配给另一个阵列。你应该使用strcpy或strncpy

strcpy(temp[clientcounter].name, curr[clientcounter]->name);

答案 1 :(得分: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);

答案 2 :(得分:0)

另外,您的声明应该是:

void loaded_data_transfer(clientdata *curr[],...