• [^] # Re: C

    Posté par . En réponse au message traitement selon le nom du fichier. Évalué à 1.

    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' || ...)