Chaine de caractères et expressions régulières [Résolu]

Signaler
Messages postés
2
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
25 avril 2007
-
Messages postés
2
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
25 avril 2007
-
Bonjour à tous,
Voilà mon problème :
Admettons que j'ai une chaine de caractères. Dans celle-ci il y a le nom d'un fichier et son extension séparés par un point.
Exemple : on peut avoir une chaine comme celle-ci : setuplog.txt

J'ai défini une structure fichier comme ceci :
typedef struct
{
   char * nom;
   char * extension;
} fichier;

Je veux donc affecter la partie avant le point dans la chaine nom et l'autre dans la chaine extension :

sscanf(chaine ,"   %[^.]  %s ",   fichier.nom, fichier.extension);

J'ai bien ce que je veux, mais le problème est que si il y a plusieurs points dans ma chaine de caractères, la chaine extension contiendra tout ce qu'il y a après le premier point rencontré. Auriez-vous une solution pour avoir dans la chaine extension seulement ce qu'il y a après le dernier point rencontré

Merci d'avance

2 réponses

Messages postés
192
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
30 janvier 2008

tu recupere la position du dernier point:


char * ptr;


strcpy(fichier.nom, chaine);

ptr = strrchr( fichier.nom, '.' );


strcpy( fichier.extension, ptr+1 );

*ptr = '\0';

<endl>< body></endl>
Messages postés
2
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
25 avril 2007

Merci beaucoup ça marche
Apparemment ce que j'avais en tête était trop compliqué par rapport à ça ^^

Bye