Structures en C

zikmike Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai pas mal de problemes pour utiliser les structure en C.
En fait j'ai deja redigé l'algo de mon programme et je sais presque tout transcrire en C mais je coince des qu'il faut utiliser des structure de donné avec la fonction struct.

Donc j'aimerais qu'on me donne un exemple avec le fichier texte suivant:

A 1 b
B 2 c

Imaginons que je veuille lire ce fichier et enregistrer les données dans un tableau. Comment je dois le rédiger

5 réponses

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Tu peux stocker chaque ligne dans ue structure :
struct plop_t{
  char x;
  unsigned y;
  char z;
};

1) Déclare un tableau t de type struct plop_t *. Je te conseille dans un premier temps de travailler avec un tableau allouée de manière statique plutôt qu'avec un malloc (il faut juste allouer plus de case que dans le nombre de ligne du fichier) :
struct plop[255];
2) Ouvre le fichier avec fopen et déclare une variable i=0;
3) Lis le fichier ligne par ligne (par exemple avec getline et sscanf).
4) Si le sscanf détecte une ligne correcte, stocke la dans le tableau dans t[i] et incrémente i (++i).
5) Une fois le fichier lu ferme-le avec un fclose.
6) Si tu as alloué le tableau avec un malloc, pense à le libérer avec un free.

Bonne chance
0
zikmike Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
mais dans l'exemple que j'ai donné j'aimerais bien enregistrer les données dans un tableau 2 lignes 3 colonnes pour me permettre de travailler sur les données après.

Est ce possible?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Oui c'est possible en déclarant un tableau d'entier et en entrant le code ascii des caractères dans le tableau.

Cdlt
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
... mais c'est peu pratique car il va falloir caster les int en caractères et ce n'est pas vraiment une "bonne" approche (notamment car un int prend plus de mémoire qu'un char et qu'un int n'est pas la meilleure manière de décrire un caractère).

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ca c'est clair que niveau élégance on a déjà fait mieux. ^^.

Sinon, tout simplement, tu prends un tableau de char. Tu stockeras les informations comme une chaîne de caractères.
Et pour récupérer les caractères, un simple sscanf suffira. :).

Mais, la structure est beaucoup mieux ;)
0