我有这个:
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 = ...
客户端数据的更好方法,请告诉我。
答案 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[],...