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
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    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
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    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
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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