Lire des mots dans un fichier avec le ";" comme séparateur
Résolu
nemo1310
Messages postés
73
Statut
Membre
-
nemo1310 Messages postés 73 Statut Membre -
nemo1310 Messages postés 73 Statut Membre -
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() :-).