Chaine de caractères et expressions régulières

Résolu
Neufran Messages postés 2 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 25 avril 2007 - 25 avril 2007 à 19:12
Neufran Messages postés 2 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 25 avril 2007 - 25 avril 2007 à 19:41
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

THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
25 avril 2007 à 19:20
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>
3
Neufran Messages postés 2 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 25 avril 2007
25 avril 2007 à 19:41
Merci beaucoup ça marche
Apparemment ce que j'avais en tête était trop compliqué par rapport à ça ^^

Bye
0
Rejoignez-nous