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]

ここで、このポインター配列を名前付きの char 配列に変換する必要がtemp[clientcounter]あります。これは、コードの後半で何かを評価するために 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

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 に答える