I don't understand why the if statement: &*accountslist[1] == &*unameslist[0] is true. What is going on here? Is the problem with my realloc? Also, when I make accountlist[1] = NULL it seems that unameslist[0] also gets set to null. This makes me think that for some reason they end up pointing to the same location.
int loadInfo( char*** accountslist,
char*** unameslist,
char*** passlist )
{
FILE* account_file = fopen( ACCOUNTS_LOCATION, "r" );
FILE* uname_file = fopen( UNAMES_LOCATION, "r" );
FILE* pass_file = fopen( PASSWORDS_LOCATION, "r" );
char* nextAccount;
char* nextUname;
char* nextPass;
fileWithNum( account_file, &nextAccount );
fileWithNum( uname_file, &nextUname );
fileWithNum( pass_file, &nextPass );
*accountslist = (char**) malloc( sizeof(char*) );
*unameslist = (char**) malloc( sizeof(char*) );
*passlist = (char**) malloc( sizeof(char*) );
*accountslist[0] = nextAccount;
*unameslist[0] = nextUname;
*passlist[0] = nextPass;
int num_accounts = 1;
while( nextAccount != NULL && nextUname != NULL &&
nextPass != NULL )
{
*accountslist = (char**)realloc( *accountslist,
(num_accounts + 1) * sizeof(char*));
*unameslist = (char**)realloc( *unameslist,
(num_accounts + 1) * sizeof(char*));
*passlist = (char**)realloc( *passlist,
(num_accounts + 1) * sizeof(char*));
fileWithNum( account_file, &nextAccount );
fileWithNum( uname_file, &nextUname );
fileWithNum( pass_file, &nextPass );
printf( "%s\n" , *unameslist[0] );
*accountslist[1] = NULL;
if( &*accountslist[1] == &*unameslist[0] ) printf("WHY??\n" );
printf( "%s, %s, %s\n" , *accountslist[0], *unameslist[0], *passlist[0]);
*accountslist[num_accounts] = nextAccount;
*unameslist[num_accounts] = nextUname;
*passlist[num_accounts] = nextPass;
printf( "%s, %s, %s\n" , *accountslist[num_accounts],
*unameslist[num_accounts], *passlist[num_accounts]);
num_accounts++;
}
fclose( account_file );
fclose( uname_file );
fclose( pass_file );
return num_accounts;
}