Autant pour moi (et merci pour ces présicions). Je n'ai d'ailleurs pas vu le problème puisque j'affiche le nom de fichier avant le test. L'expression atoi(&file[4]), quand elle est vraie, empêche le remplacement de '0円' par '_' ;-( car jamais évalué!
Avec une variable de plus, on devrait pouvoir faire (non testé!):
int isnum;
if(length==12 && !strncmp(file,"FFF_",4) &&
!strncmp(&file[length-4],"_tmp", 4) &&
!( *(file+length-4)=0 ) &&
(isnum=atoi(&file[4]) || 1) &&
( *(file+length-4)='_' ) && isnum) {
// traitement sur le fichier ici ...
(isnum=atoi(&file[4]) || 1) est toujours vraie et remplit isnum avec 1 si la séquence est un nombre, ( *(file+length-4)='_' ) remplace le '0円' par le '_' et renvoie toujours vrai et le teste se termine avec isnum.
Voilà :-)
/!\ si la séquence peut valoir 0000, le test échoue alors que le nom de fichier est valide, il faut rajouter un bout de test du genre ($file[length-5] == '0' || ...)
[^] # Re: C
Posté par Jay . En réponse au message traitement selon le nom du fichier. Évalué à 1.
int isnum; if(length==12 && !strncmp(file,"FFF_",4) && !strncmp(&file[length-4],"_tmp", 4) && !( *(file+length-4)=0 ) && (isnum=atoi(&file[4]) || 1) && ( *(file+length-4)='_' ) && isnum) { // traitement sur le fichier ici ...(isnum=atoi(&file[4]) || 1) est toujours vraie et remplit isnum avec 1 si la séquence est un nombre, ( *(file+length-4)='_' ) remplace le '0円' par le '_' et renvoie toujours vrai et le teste se termine avec isnum. Voilà :-) /!\ si la séquence peut valoir 0000, le test échoue alors que le nom de fichier est valide, il faut rajouter un bout de test du genre ($file[length-5] == '0' || ...)