Je suis en train d'apprendre les chaînes de caractères, les pointeurs et les tableaux en C. J'ai essayé d'écrire un programme dans lequel un tableau contient trois pointeurs vers des adresses de chaînes de caractères. Tout semble fonctionner mais le programme se comporte bizarrement.
Voici le code :
char** getUserDetails()
{
char* host = "localhost";
char* username = "root";
char* password = "mypassword";
// create array for holding pointers to strings
char *userDetailsHolder[3];
userDetailsHolder[0] = malloc(sizeof(char)*strlen(host));
strcpy(userDetailsHolder[0], host);
userDetailsHolder[1] = malloc(sizeof(char)*strlen(username));
strcpy(userDetailsHolder[1], username);
userDetailsHolder[2] = malloc(sizeof(char)*strlen(password));
strcpy(userDetailsHolder[2], password);
return userDetailsHolder;
}
int main()
{
char** userDetails = getUserDetails();
printf("Host: %s\nUsername: %s\nPassword: %s\n", userDetails[0], userDetails[1], userDetails[2]);
printf("Host: %s\nUsername: %s\nPassword: %s\n", userDetails[0], userDetails[1], userDetails[2]);
return 0;
}
Sortie : La sortie indique que quelque chose s'est terriblement mal passé.
Host: localhost
Username: root
Password: mypassword
Host: root
Username: localhost
Password: Host: %s
Username: %s
Password: %s
Le premier printf
semble fonctionner, mais la seconde contient les mauvaises données. Qu'est-ce que j'ai fait de mal ?