Lire des mots dans un fichier avec le ";" comme séparateur
Résolu/Fermé
nemo1310
Messages postés
61
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
3 juin 2017
-
16 févr. 2016 à 02:58
nemo1310 Messages postés 61 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 3 juin 2017 - 20 févr. 2016 à 04:02
nemo1310 Messages postés 61 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 3 juin 2017 - 20 févr. 2016 à 04:02
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 fichier epub - Guide
- Lire fichier bin - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
16 févr. 2016 à 08:17
16 févr. 2016 à 08:17
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.
16 févr. 2016 à 10:28
fait l'affaire si on utilise un "negated scanset" sur le point virgule, du genre au lieu de %s pour les chaînes.
:-)
Dal
16 févr. 2016 à 14:12
16 févr. 2016 à 14:19
16 févr. 2016 à 20:53
Merci Dal et fiddy d'avoir redressé la barre.
16 févr. 2016 à 21:43
À noter que sans sscanf(), il y avait aussi la possibilité d'utiliser strtok() :-).