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 :

Acceder à un pointeur tableau dans une struct


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut Acceder à un pointeur tableau dans une struct
    Bonjour

    Mon problème est que j'aimerai accéder au caractère & dans la tabEssai[0].forme[1] par exemple.

    J'ai essayais tabEssai[0].*(forme[1]+2);
    ceci ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct Essai{
    	char* forme[6];
    };
    typedef struct Essai Essai;
     
    int main (void)
    {
        Essai tabEssai[3];
        tabEssai[0].forme[1] = "#  &";
        tabEssai[0].forme[0] = "#  é";
        return 0;
    }
    merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 678
    Points : 30 965
    Points
    30 965
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par france38 Voir le message
    Bonjour

    Mon problème est que j'aimerai accéder au caractère & dans la tabEssai[0].forme[1] par exemple.

    J'ai essayais tabEssai[0].*(forme[1]+2);
    ceci ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct Essai{
    	char* forme[6];
    };
    typedef struct Essai Essai;
     
    int main (void)
    {
        Essai tabEssai[3];
        tabEssai[0].forme[1] = "#  &";
        tabEssai[0].forme[0] = "#  é";
        return 0;
    }
    merci d'avance.
    Salut

    Déjà tu tentes de remplir forme[0] et forme[1] alors que ces zones n'ont pas été allouées.

    Sinon ton vrai pb c'est que tu essaies de copier une chaine via l'opérateur "=". Or cet opérateur est dédié à la copie des éléments de base du C (les int, les float, etc). Or une chaine n'est pas un élément de base mais un tableau de caractères. Il te faut donc le copier caractère par caractère. Heureusement que les programmeurs de la librairie C y ont déjà pensé et qu'ils ont créé la fonction strcpy() qui le fait pour toi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct s_Essai{
    	char forme[2][6];
    };
    typedef struct s_Essai t_Essai;
     
    int main (void)
    {
        t_Essai tabEssai[3];
        strcpy(tabEssai[0].forme[0], "#  é");
        strcpy(tabEssai[0].forme[1], "#  &");
        return 0;
    }
    Sinon il y a aussi une autre possibilité: étant donné que les chaines "# &" existent en dur dans ton code, elles ont aussi une adresse. Donc tu peux stocker directement cette adresse et là, comme une adresse est un élément de base du C, tu peux utiliser l'opérateur "="

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct {
    	char* forme[2];
    } t_Essai;
     
    int main (void)
    {
        t_Essai tabEssai[3];
        tabEssai[0].forme[0] = "#  é";
        tabEssai[0].forme[1] = "#  &";
        return 0;
    }
    Citation Envoyé par france38 Voir le message
    Mon problème est que j'aimerai accéder au caractère & dans la tabEssai[0].forme[1] par exemple.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c\n", tabEssai[0].forme[1][3]);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. pointeur sur tableau dans une structure
    Par rollbich dans le forum Débuter
    Réponses: 3
    Dernier message: 02/06/2013, 22h23
  2. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  3. Réponses: 11
    Dernier message: 20/10/2006, 13h19
  4. Tableau dans une interface idl
    Par Polochon2001 dans le forum CORBA
    Réponses: 2
    Dernier message: 14/05/2004, 09h44
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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