Re: un peu HS : problème en C

Top Page

Reply to this message
Author: Patrick Begou
Date:  
To: ML Guilde
Subject: Re: un peu HS : problème en C
Si ce petit exemple peut t'aider....
Quand le nom du fichier contient "toto." sur les premiers caractères, le
strncmp retourne 0 (et uniquement dans ce cas).

La chaine de comparaison (ref) peut etre passée en paramètre (c'est
mieux que de coder hard!) pour etre comparée à la chaine contenue dans tab.

Si tu executes l'exemple, tappes tes noms de fichier (pour essayer) et
quite la boucle par q


Patrick


#include<stdio.h>
#include<string.h>
int main()
{
char tab[20];
char ref[]="toto.";


scanf("%s",tab);
while (strlen(tab) !=1 || tab[0]!='q')
{
printf("strcmp(\"%s\",\"%s\") = %d
\n",tab,ref,strncmp(tab,ref,strlen(ref)));
scanf("%s",tab);
}
return 0;
}

anne aublanc wrote:
> bonjour,
>
> C'est quand même pour mon linux préféré! ;o))
>
> Je ne connais rien en C...
> J'ai dupliqué un pgm C...
>
> J'ai modifié...
> Il me manque juste un petit truc...
>
> J'ai ces lignes :
>     while( ( de = readdir( dirp ) ) != NULL )
>     {
>         if ( strcmp( de->d_name, "." ) == 0 ||
>              strcmp( de->d_name, ".." ) == 0 ||
>              strcmp( de->d_name, dir ) != 0)

>
> Je suis en train de lire un répertoire pour récupérer tous les fichiers qui
> commencent par toto
> dir = toto
> Dans le fichier je peux avoir toto.01 ou toto.01 toto.02 ....
> de->d_name = toto.01
>
> J'aimerai donc qu'il compare en enlevant les dernières lettres après le
> point et aussi le point car je peux avoir toto.115
> Je ne peux pas dire que j'enlève les 3 dernières lettres, il peut y en avoir
> 4.
> On fait comment en C?
>
> merci
> anne
>
>



--
===============================================================
|  Equipe M.O.S.T.         | http://most.hmg.inpg.fr          |
|  Patrick BEGOU           |       ------------               |
|  LEGI                    | mailto:Patrick.Begou@hmg.inpg.fr |
|  BP 53 X                 | Tel 04 76 82 51 35               |
|  38041 GRENOBLE CEDEX    | Fax 04 76 82 52 71               |

===============================================================