簡體   English   中英

如何將指針數組轉換為char數組?

[英]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 expectedtemp[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM