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 :

retourner un tableau de structure ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut retourner un tableau de structure ?
    bonjour

    je voudrais retourner un tableau de structure non dimensionner,

    je dois lire des fichiers txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prenom nom age genre
    pas de probleme pour recuperer chaque elements de la ligne, mais d'un fichier à un autre, pas le meme nombre de lignes,

    donc je ne peut pas definir la taille de mon_tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct ma_struct mon_tableau [];
    exemple:
    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
     
    struct ma_struct {
    char prenom;
    char nom;
    int age;
    char genre;
    };
     
    typedef struct ma_struct MS;
     
    MS readfile(Ms s);
     
    main()
    {
    	MS test[];
    }
     
    MS readfile(Ms s)
    {
    	boucle de lecture ligne par ligne
    	segmentation de la ligne
    	Ms s[i] = {
    	*prenom1,
    	nom1,
    	age1,
    	genre1
    	};
    	i++
    }
    merci pour votre aide !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut
    Euh je sais pas si ma réponse est juste, mais je pense que tu devrais utiliser l'allocation dynamique en fonction du nombre de lignes de ton fichier.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut
    oui je pense aussi, mais je ne vois pas comment faire ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    voir les Faqs, les cours de Melem, et les autres ressources ici..


    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
    typedef struct pma_struct {
    char prenom;
    char nom;
    int age;
    char genre;
    } ma_struct ;
     
    ma_struct *MS;
     
    /* Plusieurs possibilités
     *
     *
     * Ouvre le fichier 
     * Crée une structure
     * Lit le fichier ligne à ligne
     * stocke dans la structure 
    */
     
    int  readfile(char Filename, ma_struct **Table)
    {
    ...
    }
     
    ma_struct *readfile (char Filename, int *N )
    {
    ...
    }
     
     
     
    int main ( void )
    {
       ma_stuct *MS=NULL ;
       int    NS ;
     
      NS = readfile ( "Nom", &MS );
     
      MS = readfile ( "Nom", &N );
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut
    merci pour ta reponse souviron34 ! mais j'ai du mal a comprendre, si tu pouves donnée quelques explications s& serais sympat ?

    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
     
    int  readfile(char Filename, ma_struct **Table) 
    {
    ...
    }
     
    ma_struct *readfile (char Filename, int *N )
    {
    ...
    }
     
     
     
    int main ( void )
    {
       ma_stuct *MS=NULL ;
       int    NS ;
     
      NS = readfile ( "Nom", &MS );
     
      MS = readfile ( "Nom", &N );
    }
    et N dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_struct *readfile (char Filename, int *N )
    c'est pas NS ?

  6. #6
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    pas de probleme pour recuperer chaque elements de la ligne, mais d'un fichier à un autre, pas le meme nombre de lignes,

    donc je ne peut pas definir la taille de mon_tableau
    Si tu ne peux pas definir a l'avance la taille de ton tableau, il te faut soit des realloc, soit une liste chainee.

    Exemple:

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    #include <stdlib.h>
     
    #define ABS(x) ((x) < 0 ? -(x) : (x))
     
    typedef struct s_list
    {
      char *nom;
      char *prenom;
      int age;
      char *genre;
     
      struct s_list *next;
    } t_list;
     
    t_list *push(t_list **b, char *n, char *p, char *a, char *g)
    {
      t_list *new;
     
      if (!(new = malloc(sizeof(t_list))))
        return (NULL);
     
      if (!(new->nom = strdup(n)))
        return (NULL);
      if (!(new->prenom = strdup(p)))
        return (NULL);
      if (!(new->genre = strdup(g)))
        return (NULL);
      new->age = ABS(atoi(a));
     
      new->next = *b;
      *b = new;
     
      return (new);
    }
     
    void free_list(t_list *l)
    {
      t_list *t;
     
      while (l)
        {
          t = l->next;
          free(l->prenom);
          free(l->nom);
          free(l->genre);
          free(l);
          l = t;
        }
    }
     
    const char t[] = {
      "prenom",
      "nom",
      "age",
      "genre",
      0
    };
     
    char *param(char *buffer, char *param)
    {
      /* return parameter sense to strtok and its id in t */
    }
     
    int main(int argc, char *argv[])
    {
      t_list *list;
      char buffer[512];
      FILE *f;
     
      /* open file */
      list = NULL;
      while (fgets(buffer, 512, f))
        if (!push(&list, param(buffer, "prenom")
    	      , param(buffer, "nom")
    	      , param(buffer, "age")
    	      , param(buffer, "genre")))
          return (1);
     
      /* treat list */
     
      fclose(f);
      free_list(list);
     
      return (0);
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/04/2010, 11h33
  2. Retourner un tableau ?
    Par chateau_dur dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2005, 12h11
  3. retourné un tableau
    Par elekis dans le forum C++
    Réponses: 5
    Dernier message: 17/03/2005, 15h03
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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