Lire un fichier en C mot par mot
Résolu
stephanier_29
-
bizu53 Messages postés 1274 Date d'inscription Statut Membre Dernière intervention -
bizu53 Messages postés 1274 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Actuellement, je travaille sur un projet personnel afin de délimiter des traits de côte, et j'ai trouvé sur un site les coordonnées de divers points, mais qui sont stockés dans un fichier texte.
Le fichier texte est à peu près de cette allure :
# -b correspond à un "changement de côte", par exemple, quand on arrive sur une île.
Ce que je voudrais c'est pour chaque île pouvoir récupérer la première coordonnées du point, et la deuxième, et les stocker dans ma structure :
Sachant que je dois faire cela pour tous les points et toutes les îles tant que mon fichier n'est pas fini.
J'avoue qu'en JAVA, j'aurais codé ça sans problème, mais là en C, je rame un peu, donc j'en viens à votre bon coeur.
Merci d'avance,
Stéphanie
Actuellement, je travaille sur un projet personnel afin de délimiter des traits de côte, et j'ai trouvé sur un site les coordonnées de divers points, mais qui sont stockés dans un fichier texte.
Le fichier texte est à peu près de cette allure :
# -b -2.401399 46.724901 -2.400812 46.724607 -2.399932 46.724607 -2.398759 46.723434 -2.398759 46.720794 -2.397879 46.719914 -2.397879 46.718447
# -b correspond à un "changement de côte", par exemple, quand on arrive sur une île.
Ce que je voudrais c'est pour chaque île pouvoir récupérer la première coordonnées du point, et la deuxième, et les stocker dans ma structure :
typedef Struct _Point{ double longitude; double latitude; }Point;
Sachant que je dois faire cela pour tous les points et toutes les îles tant que mon fichier n'est pas fini.
J'avoue qu'en JAVA, j'aurais codé ça sans problème, mais là en C, je rame un peu, donc j'en viens à votre bon coeur.
Merci d'avance,
Stéphanie
A voir également:
- Lire un mot dans un fichier en c
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Fichier rar - Guide
2 réponses
Je te conseille d'utiliser la fonction sscanf(). Elle fonctionne comme scanf() sauf qu'elle prend en entrée une chaîne de caractère en premier paramètre [qui est supplémentaire par rapport à scanf()].
Par exemple ce bout de code :
Affiche :
a : -2.398759
b : 46.723434
(J'ai mis des float dans mon exemple car le format double n'est pas justifié pour des nombres d'une précision si petite)
Remarque : pour le sscanf() tout comme pour le scanf() les espaces sont considérés comme des séparateurs donc leur nombre n'importe pas tant qu'il y en a au moins un.
Par exemple ce bout de code :
#include <stdio.h> int main() { char *str = "-2.398759 46.723434"; float a, b; sscanf(str, "%f%f", &a, &b); printf("a : %f\nb : %f", a, b); }
Affiche :
a : -2.398759
b : 46.723434
(J'ai mis des float dans mon exemple car le format double n'est pas justifié pour des nombres d'une précision si petite)
Remarque : pour le sscanf() tout comme pour le scanf() les espaces sont considérés comme des séparateurs donc leur nombre n'importe pas tant qu'il y en a au moins un.
Salut,
j'ai réussi à faire ce que je voulais faire, mais j'avoue que je n'aurais pas pensé à sscanf()
Le sscanf() n'est pas forcement nécessaire.
Il l'a utiliser puisqu'il fait la lecture depuis une variable qu'il a initialisée.
Quand tu lis le fichiers, il suffit d'utiliser la fonction fscanf
j'ai réussi à faire ce que je voulais faire, mais j'avoue que je n'aurais pas pensé à sscanf()
Le sscanf() n'est pas forcement nécessaire.
Il l'a utiliser puisqu'il fait la lecture depuis une variable qu'il a initialisée.
Quand tu lis le fichiers, il suffit d'utiliser la fonction fscanf
int fscanf (FILE *stream, const char *format, ...);Le stream sera le pointeur de type FILE vers ton fichier.
j'ai réussi à faire ce que je voulais faire, mais j'avoue que je n'aurais pas pensé à sscanf()