だから、少し問題があります。私はハッシュテーブルを構築しようとしていますが、 "互換性のないポインタ型からの復帰"というエラーが出ています。私はこれが何を意味するのか知っていますが、私のコードがなぜ機能していないのかわかりません。なぜ私のコードがうまくいかないのかの説明を探しています。配列をポインタとして認識しないのはなぜですか?構造体へのポインタの配列へのポインタを返す
私は、ハッシュテーブルの構造体へのポインタの配列を作成しています。 (私はまだ学んでいる>私は私のコードは、おそらく実際に吸うことを知っている<を!) は(外部チェーン)
struct hashTBL {
char *userID;
char *password;
struct hashTBL *next;
};
typedef struct hashTBL Tbl;
typedef struct hashTBL* TblPTR;
TblPTR createHashTBL(int size)
{
char *userID;
char *password;
int i;
TblPTR hashArray[size];
FILE* fpData;
char *fileName = "encrypted.txt";
fpData = openReadFile(fileName);
TblPTR T = NULL;
while((fscanf(fpData, "%s", userID)) != EOF)
{
fscanf(fpData, "%s", password);
i = hash(userID, size);
if(hashArray[i] != NULL)
{
TblPTR H = hashArray[i];
while(H != NULL)
{
T = H;
H = H->next;
}
H = newPTR(userID, password, T);
}
else
{
hashArray[i] = newPTR(userID, password, T);
}
}
closeFile(fpData);
return &hashArray;
}
TblPTR newPTR(char *userID, char *password, TblPTR T)
{
TblPTR H = (TblPTR)malloc(sizeof(Tbl));
if(T != NULL) T->next = H;
H->userID = userID;
H->password = password;
H->next = NULL;
return H;
}
コンパイラがどの行を表示していても、コード内のエラーを見つけるのは難しいですが、コードは有効です。どのラインで失敗するのですか? – Neil
可能な限りコンパイル可能なコードサンプルを提供するか、エラーの発生場所を指定してください。私は 'TblPTR'が' Tbl * 'のtypedefだと仮定しますが、あなたは' Tbl'の定義を与えませんでした。 –
return statment "互換性のないポインタ型からの復帰" "関数がローカル変数のアドレスを返します" – Bri