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 :

allocation d'un tableau dans une structure


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Points : 28
    Points
    28
    Par défaut allocation d'un tableau dans une structure
    salut tout le monde, voilà je voudrai savoir si j'ai le droit de faire dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include<stdio.h>
    #include<stdlib.h>
    //#include "fonctions.h"
    struct Base_de_donnees{
           int x;
           int y;
           char *station;
    } BD;
     
    int main(void)
    {
     
      int taille=0;
     
    printf("Entrez la valeur du tableau : ");
      scanf("%d",&taille);
     
    /* est-ce que je peux allouer le tableau station comme ceci ?? */  
      BD.station=calloc(taille,sizeof(char));
     
    /* ici je mettrai le code qui permettrai de mettre a jour la BD */
    return 0;
    en fait, je voudrais savoir si je peux allouer dynamiquement le tableau station pour eviter d'allouer statiquement le tableau station directement à la compilation ? pour ainsi allouer la place nécessaire .
    comme je dois creer un programme qui creer une Base de données de stations.

    PS : pas d'erreure à la compilation.

    Merci .

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Voici mes commentaires:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include <stdio.h>
    #include <stdlib.h>
     
    struct Base_de_donnees
    {
        int x;
        int y;
        char *station;
    };
     
    /* -tc- purge le tampon du flux d'entree standard */
    void purge(FILE *fp)
    {
        if (fp != NULL)
        {
            int c;
     
            while ((c = fgetc(fp)) != '\n' && c != EOF)
            {
            }
        }
    }
     
    int main(void)
    {
        int taille = 0;
        int ret = 0;
        int rv;
        /* -tc- Attention a eviter les variables globales. Par ailleurs, par
           convension, les identificateurs en majuscules sont reserves aux constantes */
        struct Base_de_donnees bd =
        {
            0, 0, NULL
        };
     
        do
        {
            printf("Entrez la valeur du tableau : ");
            /* -tc- Attention a purger le flux de sortie standard */
            fflush(stdout);
            /* -tc- Attention a verifier la valeur retournee par scanf() */
            rv = scanf("%d", &taille);
            /* -tc- Attention a purger le flux d'entree standard */
            fpurge(stdin);
        }
        while (rv != 1);
     
        bd.station = calloc(taille, sizeof *bd.station);
        /* -tc- Attention a tester la valeur de retour de calloc() et a liberer
           la memoir ele moment venu */
        if (bd.station != NULL)
        {
            /* -tc- Actions utilisant bd.station */
     
            free(bd.station), bd.station = NULL;
        }
        else
        {
            /* -tc- Echec de l'allocation */
            ret = EXIT_FAILURE;
        }
     
        return 0;
    }
    Thierry

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Merci ça marche
    mais est-ce qu'on peut voir la taille qui fut allouée comme ça je pourrai voire si la taille correspond ?

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Klaine Voir le message
    Merci ça marche
    mais est-ce qu'on peut voir la taille qui fut allouée comme ça je pourrai voire si la taille correspond ?
    ben, si l'allocation a réussi (i.e. calloc() retourne une adresse différente de NULL), alors la taille allouée est celle que tu as demandée.

    Thierry

Discussions similaires

  1. tableau dans une structure
    Par sourir-d'enfer dans le forum Débuter
    Réponses: 8
    Dernier message: 03/01/2010, 19h18
  2. Utilisation d'un tableau dans une structure
    Par Angelique64 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/06/2009, 11h05
  3. Problème de tableau dans une structure
    Par zarbiman dans le forum Réseau
    Réponses: 5
    Dernier message: 15/12/2007, 18h21
  4. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  5. Tableau dans une structure
    Par Elstak dans le forum C
    Réponses: 3
    Dernier message: 25/04/2007, 11h45

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