Итак, у меня небольшая проблема. Я пытаюсь создать хеш-таблицу, но получаю сообщение об ошибке «Возврат из несовместимого типа указателя» Я знаю, что это значит, но я не знаю, почему мой код не работает. Я ищу объяснение того, почему мой код не работает. Почему он не распознает массив как указатель?
Я делаю массив указателей на структуры для хеш-таблицы. (внешне прикованный)
(Я знаю, что мой код, вероятно, действительно отстой> <Я все еще учусь!) </p>
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;
}