Oula. Ce n'est peut être pas un exo sur les pointeurs mais un peu quand même, hein
database est un char*; Vu que la taille d'un pointeur est généralement de 4 octets tu fais en réalité un malloc(4);
Code : Sélectionner tout - Visualiser dans une fenêtre à part char* temp_db = (char*)malloc(sizeof(database));
Attention le "new char" n'alloue qu'un seul char sur le tas.
Mais tu as besoin d'allouer un tableau de char, un tableau assez grand pour contenir toute la base de donnée.
D'ailleurs est-ce que tu as vérifié que ta base de donnée à l'origine contient bien ces '\0' ? Si oui strncat est parfait, si non il vaut mieux faire des memcpy (qui n'ajoute pas de '\0')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char* temp_db = new char[taille_database]; // et pas sizeof(database) //... // après utilisation delete[] temp_db;
Attention ! La doc de strdup explique que cette fonction renvoie une nouvelle chaine allouée avec malloc. Tu ne vas donc pas modifier l'ancienne database (ce qui était le but, non ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part database = strdup(temp_db);
Partager