IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pointeurs et tableaux à deux dimensions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Patrice.H
    Homme Profil pro
    Étudiant en alternance
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant en alternance

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Par défaut [Résolu]Pointeurs et tableaux à deux dimensions
    Bonjour, j'ai le problème suivant:
    J'alloue dynamiquement un tableau à n lignes selon le choix utilisateur avec malloc() puis je tente d'y introduire des nombres via une fonction (sys_connect() ).
    Dans la fonction le compilateur me renvoie "Error: subscripted value is neither array nor pointer".
    Il me semble que je dois mal passer le pointeur à la fonction mais malgré mes recherches dans la FAQ impossible d'identifier mon erreur.

    La déclaration du tableau dans le main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                int *cnx;
      			printf("Choisir le nombre de lignes du tableau\n");
    			fgets(saisie, sizeof saisie, stdin);
    			sscanf(saisie,"%d",&nb_cnx);
    			cnx = malloc(nb_cnx*1023);
    			sys_connect(nb_cnx,cnx);
    Et la fonction elle même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int sys_connect (int nb_cnx, int *cnx)
    {
            int i=0,j=0,r=0;
    	for (i=0;i<1023;i++)//Pour chaque colonne
    	{
    		for (j=0;j<nb_cnx;j++)//Pour chaque ligne
    		{
    			r=blablabla;//Où blablabla est un nombre calculé précédement
    			cnx[j][i]=r;//ERREUR sur cette ligne
    		}
     
    	}
    	return 0;
    };
    Je vous remercie de votre lecture, et si vous voyez d'autres aberrations n'hésitez pas à me les signaler!
    Cordialement,
    PH.

  2. #2
    Membre éclairé Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Par défaut
    Eh bien, si tu veux que cnx soit un tableau à deux dimensions, il faut le déclarer comme tel:
    Si tu veux avoir nb_cnx lignes dans ton tableau, il faut que tu fasses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cnx = malloc(nb_cnx * sizeof(int*)); //sizeof(int*) = 4
    Et ensuite, si tu veux que chaque ligne fasse 1023 cases (et donc que ton tableau fasse 1023 colonnes), il faut allouer la mémoire correspondant à chaque ligne avec une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i = 0; i < nb_cnx; i++)
    {
    	cnx[i] = malloc(1023 * sizeof(int)); //sizeof(int) = 4 aussi
    }
    sizeof(int) et sizeof(int*) correspondent ici aux éléments que tu mets dans ta variable. Donc si tu faisais un tableau à deux dimensions rempli de caractères, tu ferais sizeof(char*) puis sizeof(char). Dans le premier cas, tu déclares en fait que cnx est un tableau de pointeurs, chacun des pointeurs pointant à son tour sur un tableau d'entiers. Ensuite, tu dis que chacun de ces tableaux d'entiers doit avoir de la place pour mettre 1023 entiers =)

    J'crois bien que c'est comme ça qu'il faut faire.

Discussions similaires

  1. Pointeurs et tableaux à deux dimensions
    Par Saixia dans le forum Débuter
    Réponses: 2
    Dernier message: 09/08/2009, 15h50
  2. decalaration dynamique tableaux deux dimensions et TRI
    Par Alex35 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/12/2007, 13h48
  3. [Problème]Tableaux deux dimensions
    Par maloute80 dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2007, 14h31
  4. [Tableaux] Gerer des tableaux à deux dimensions
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo