[英]How to convert pointer array to char array?
我有這個:
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個變量時,我會向clientcounter
添加1。
所以, *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;
}
問題是,微型C是給我的錯誤: lvalue expected
在temp[clientcounter.name = ...
一部分。 誰能告訴我,我做錯了什么?
如果有人知道一個更好的方式來跟蹤的curr
使用計數器,並通過使用單鏈表clientdata的,請讓我知道。
您無法將陣列分配給另一個陣列。 你應該使用strcpy或strncpy
strcpy(temp[clientcounter].name, curr[clientcounter]->name);
也許你打算復制整個結構:
void loaded_data_transfer(clientdata * curr, clientdata temp[], int clientcounter)
{
temp[clientcounter] = *curr; // Copy entire struct
}
它應該工作,因為你的struct沒有任何指針成員。
我假設你這樣使用它
clientdata * curr[CURR_SIZE];
clientdata temp[TEMP_SIZE];
/* init curr elements here */
loaded_data_transfer(*curr[clientcounter], temp, clientcounter);
此外,您的聲明應該是:
void loaded_data_transfer(clientdata *curr[],...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.