Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/01/2013, 21h08   #1
Koko33
Nouveau Membre du Club
 
Homme Pierre Dufourcq
Inscription : avril 2011
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Pierre Dufourcq
Localisation : France

Informations professionnelles :
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : avril 2011
Messages : 60
Points : 36
Points : 36
Par défaut Matrice de pointeur à initialiser..

Bonjour,
Je reviens aux bases car je m'aperçois qu'il y a quelques notions qui me font défaut. Voilà pour simplifier j'ai une structure avec un tableau dedans que je vais allouer dynamiquement. Mon pb n'est pas dans l'allocation mais dans l'initialisation --' :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct s_test{
char *tab[DIM1][DIM2];
};
 
extern struct s_test test; //avec la déclaration dans le .c (au niveau de la structure pas de pb)
 
//Puis plus loin, au début du main, je veux l'initailiser, alors je fais d'une certaine façon mais j'ai bien peur que ca ne soit pas très juste.Ca compile hein mais bon je trouve qu'il y a bcp de boucle pour une initialisation...
 
int k, l;
 
for(k=0;k<DIM1;k++){
     for(l=0;l<DIM2;l++){
          test.tab[k][l] = NULL;
     }
}
 
// J'arrive pas à me satisfaire de ça, où est le pb? Et comment je dois faire pour vmt tout mettre à NULL?
 
//Merci d'avance
Koko33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 02h20   #2
Ngork
Membre chevronné
 
Homme
Auditeur informatique
Inscription : avril 2009
Messages : 118
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Finance

Informations forums :
Inscription : avril 2009
Messages : 118
Points : 650
Points : 650
Par défaut OK

Tel que je lis ton code, je ne vois pas de faute a priori : tu es bien obligé de faire deux boucles imbriquées si tu veux initialiser un par un les pointeurs de ton tableau à deux dimensions.

Maintenant, si cette initialisation se fait avec le pointeur NULL systématique, cela revient à remplir ton tableau de DIM1 * DIM2 pointeurs avec des zéros, ce qui peut se faire plus rapidement par un memset(test.tab,0,DIM1*DIM2*sizeof(char *)), à mon avis ...
Ngork est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 18h56   #3
Koko33
Nouveau Membre du Club
 
Homme Pierre Dufourcq
Inscription : avril 2011
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Pierre Dufourcq
Localisation : France

Informations professionnelles :
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : avril 2011
Messages : 60
Points : 36
Points : 36
Nickel, c'est ce genre de fonction que je cherchais! Merci beaucoup!
Koko33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 14h25   #4
liberforce
Membre Expert
 
Homme
Développeur informatique
Inscription : juin 2009
Messages : 1 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2009
Messages : 1 040
Points : 1 526
Points : 1 526
Citation:
Envoyé par Ngork Voir le message
ce qui peut se faire plus rapidement par un memset(test.tab,0,DIM1*DIM2*sizeof(char *))
Ceci doit fonctionner aussi et est plus lisible:
Code :
memset(test.tab,0, sizeof(test.tab))
En revanche cela ne fonctionnera que si test.tab est un tableau statique et pas un tableau dynamique...
liberforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web