Manipulation des fichiers en C

Fermé
Archy27 Messages postés 2 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 29 août 2007 - 29 août 2007 à 12:50
Archy27 Messages postés 2 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 29 août 2007 - 29 août 2007 à 14:13
Bonjour à tous et à toutes.

Voilà j'aurais besoin d'un coup de main sur la création d'une fonction en C.
Le type de la fonction est ville *lireVilles (FILE *fvilles, int *pnombre) qui lit un fichier texte dont chaque ligne est de la forme : nom ; population.
De plus, il faut que cette fonction renvoit un tableau de villes et fixe leur nombre dans l'entier pointé par pnombre sachabt que le nombre de villes <= 2000 et que le nom d'une ville ne dépasse pas 100 caractères.
Ma question se porte donc sur: comment lire un fichier grâce à fopen() ligne par ligne en ne mélangeant pas le nom et la population qui sont séparés par un ; .

Je vous avouerais que j'ai cherché maintes et maintes fois et que je ne vois toujours pas comment faire donc si quelqu'un a un petit coup de pouce à me donner :(. Merci d'avance !!
A voir également:

1 réponse

Archy27 Messages postés 2 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 29 août 2007
29 août 2007 à 14:13
Voici le début de code que j'ai pu construire (je suis encore débutant):


Code :
typedef struct {
char *nom;
int population;
} ville;

ville *lireVilles (FILE *fvilles, int *pnombre) {
ville v;
int i;
char tab[1];
int nombredevilles;
nombredevilles = *pnombre;
while (i = fread(tab,sizeof(char),1,fvilles) !=0) {
// Comment dissocier le nom de la population sachant
// qu'ils sont séparés par un ;
}
...
return v;
}

J'imagine que l'on doit faire une égalité entre le caractère lu et le ; mais je ne vois pas vraiment comment ??
Et ensuite il faut pouvoir lire ligne par ligne car là fread() ne me permet que de lire octet par octet (d'où mon tab[1]). Voilà je sais pas si je suis complêtement à côté de la plaque mais malgrès mes recherches je ne vois toujours pas comment résoudre ce problème de débutant .
0