Structures en C

Fermé
zikmike Messages postés 5 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 9 janvier 2009 - 9 janv. 2009 à 19:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 janv. 2009 à 14:11
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 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
9 janv. 2009 à 21:21
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 vendredi 9 janvier 2009 Statut Membre Dernière intervention 9 janvier 2009
9 janv. 2009 à 21:42
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
9 janv. 2009 à 23:00
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 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
10 janv. 2009 à 13:57
... 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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
10 janv. 2009 à 14:11
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