Lire des mots dans un fichier avec le ";" comme séparateur
Résolu
nemo1310
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
nemo1310 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
nemo1310 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un fichier texte que je souhaite lire avec C.
le fichier contient:" Les Aventures de Tintin;Belgique;24 "
Comment obtenir en sorite du programme 3 variables qui ont pour valeur:
titre = Les Aventures de Tintin
pays = Belgique
num = 24
je vous remercie pour votre aide
j'ai un fichier texte que je souhaite lire avec C.
le fichier contient:" Les Aventures de Tintin;Belgique;24 "
Comment obtenir en sorite du programme 3 variables qui ont pour valeur:
titre = Les Aventures de Tintin
pays = Belgique
num = 24
je vous remercie pour votre aide
A voir également:
- Lire des mots dans un fichier avec le ";" comme séparateur
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
1 réponse
Bonjour,
Commençons par un exemple simple (mais qui ne marche pas):
Il faut donc remplacer le sscanf par une fonction à écrire plus pertinente.
La fonction doit rechercher dans le buffer les ';' et extraire les sous-chaines
La fonction strchr(,) qui retourne l'adresse de la première occurrence du caractère recherché, ou bien NULL si caractère n'est pas trouvé pourrait être utilisée.
Commençons par un exemple simple (mais qui ne marche pas):
char buffer[100]; if ( fgets( buffer , sizeof buffer , stdin ) ) { char titre[100]; char pays[100]; int num; if ( sscanf( buffer , "%s;%s;%d" , titre , pays , &num ) == 3 ) { printf("ok, lu : %s %s %d" , titre , pays , num ); } else { } }Le sscanf considère l'espace comme séparateur et n'extrait pas correctement le titre.
Il faut donc remplacer le sscanf par une fonction à écrire plus pertinente.
La fonction doit rechercher dans le buffer les ';' et extraire les sous-chaines
La fonction strchr(,) qui retourne l'adresse de la première occurrence du caractère recherché, ou bien NULL si caractère n'est pas trouvé pourrait être utilisée.
fait l'affaire si on utilise un "negated scanset" sur le point virgule, du genre au lieu de %s pour les chaînes.
:-)
Dal
Merci Dal et fiddy d'avoir redressé la barre.
À noter que sans sscanf(), il y avait aussi la possibilité d'utiliser strtok() :-).