Programme en C

cheup Messages postés 1 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 13 octobre 2007 - 13 oct. 2007 à 11:06
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 18 oct. 2007 à 16:27
bonjour,
j'ai un projet à réaliser en info en C sous linux.
cependant je ne suis pas très doué.
il faut ke je fasse un programme permettant de reviser les verbes irregulir en anglais.
mais je n'arrive pas a realiser la fonction de transfert de mon fichier verbes dans un tableau de structure.
mon fichier de verbe est un fichier avec a chaque ligne la base verbale, le preterit, le participe passé et la traduction du verbe.
merci de votre aide.

2 réponses

The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007
13 oct. 2007 à 14:47
Bonjour,

OK tu dis que tu as un tableau de structures, mais quelle est la structure ? Car si tu veux avoir la même structure que dans ton fichier, tu peux faire un truc du genre
struct {
char * base;
char * preterit;
char * participe_passe;
char * traduction;
 } verbe;

Donc une fois que tu as fait ça, il faut faire attention à tes allocations, et puis découper la ligne de ton fichier en 4 pour remplir chaque élément de ta structure.
=

Une autruche ne se cuit pas aux petits lardons
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 14
18 oct. 2007 à 16:27
Salut,


Tu peux lire toute une ligne d'un coup avec un fscanf bien sentit dans ce genre là :


fscanf(f, "%s %s %s %s", v.base, v.preterit, v.participe_passe, v.traduction);


Le plus simple est d'allouer des structures contenant des tableaux de caractères de taille fixe plutôt que des pointeurs :

typedef struct _Verbe {

  char base[100];

  char preterit[100];

  char participe_passe[100];

  char traduction[100];

} Verbe;


Il va falloire que tu fasse un tableau de structure.

Pour connaître sa taille, tu peux par exemple lire toutes les lignes du fichier une première fois juste pour les compter.

#include "stdio.h"

typedef struct _Verbe {
char base[100];
char preterit[100];
char participe_passe[100];
char traduction[100];
} Verbe;

int main(int argc, char ** argv)
{
FILE * f;
Verbe v;
int size = 0;

f = fopen("verbes.txt", "r");
if (! f)
{
printf("Echec de l'ouverture du fichier\n");
return 1;
}

while (fscanf(f, "%s %s %s %s", v.base, v.preterit, v.participe_passe, v.traduction) != EOF)
size++;

printf("Nombre de lignes dans le fichier : %d\n", size);

/* malloc d'un tableau de structures Verbe */

/* While comme pour le comptage de lignes, mais en remplissant le tableau */
return 0;
}

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
0