Comment allouer tableau de pointeurs pour les chaînes par malloc en C?
J'ai cette struct en C
Exemple:
typedef struct
{
const char * array_pointers_of_strings [ 30 ];
//etc.
} message;
J'ai besoin de copier ce array_pointers_of_strings à nouveau tableau pour trier les chaînes. Je n'ai qu'à copier l'adresse.
while ( i < 30 )
{
new_array [i] = new_message->array_pointers_of_strings [i];
//I need only copy adress of strings
}
Ma question est: Comment allouer new_array [i] par la fonction malloc() pour seulement adresse de chaînes?
source d'informationauteur user1779502
Vous devez vous connecter pour publier un commentaire.
Que je peux comprendre de votre instruction d'affectation dans la boucle while, je pense que vous avez besoin de tableau de chaînes de caractères à la place:
Remarque: En faisant
=
dans la boucle while comme ci-dessous:vous êtes juste de l'affectation de l'adresse de la chaîne (pas de copie), mais parce que vous êtes également à l'écriture "seulement l'adresse de chaînes" donc je pense que c'est ce que tu veut.
Edit: waring "affectation des rejets qualificatifs de pointeur de type de cible"
vous recevez cette alerte car l'affectation d'un
const char*
àchar*
qui violerait les règles de la const-correctness.Vous devez déclarer votre new_array comme:
ou supprimer
const
dans la déclaration de "array_pointers_of_strings' à partir d'un message de la sténose.Ce:
va allouer un tampon assez grand pour accueillir 30 pointeurs vers
char
(ou pointeurs de chaîne, si vous voulez), et de confier àp
son adresse.p[0]
est pointeur 0,p[1]
est pointeur 1, ...,p[29]
est pointeur 29.Vieille réponse...
Si je comprends correctement à la question, vous pouvez créer un nombre fixe d'entre eux par le simple fait de déclarer des variables de type
message
:ou vous pouvez allouer dynamiquement: