Es wäre einfacher das direkt als Array darzustellen.
Und die Speicherdarstelleung ist auch falsch. (Name1\x00 POINTER Name2\x00 ...)
Code:
#define MAX_PLAYER_NAME_LENGTH 32
int main()
{
char* szAllNames;
int iPlayers, i = 0, iTotalStrlen = 0;
scanf("%i", &iPlayers);
szAllNames = (char*) malloc(MAX_PLAYER_NAME_LENGTH * iPlayers);
for(; i< iPlayers; i++)
{
scanf("%s", &szAllNames[iTotalStrlen]);
iTotalStrlen += strlen(&szAllNames[iTotalStrlen]);
}
free(szAllNames)
}
(eben aus dem kopf (== wahrscheinlich ein kleiner fehler der es zum abstürzen bringt drin). aber das prinzip sollte klar sein)