éviter les symboles dans un nom de fichier.

Signaler
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Salut

j'ai un programme qui me permet de créer un fichier log puis de le remplir mais quand l'utilisateur mets les symboles >< \ / : , il l'est impossible de créer le fichier
comment t on dire à l'utilisateur qui ne peut utiliser ces symboles ?

le code que j'utilise

printf ("nommer le fichier memoire \n\n");
gets (nom);

strcpy(fullpath2, ".log");
strcat(nom,fullpath2);
strcpy(fullpath, "re");
strcat(fullpath,nom);
system("cls");
ecriture = fopen (fullpath,"w");

le fichier memoire est du type renom.log

merci de votre aide

4 réponses

Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Pourquoi ne pas utiliser le nom de l'application comme fichier log
(application.log), j'ai jamais vu une application qui demandait le nom
du fichier log a l'utilisateur et aussi pourquoi ne pas utiliser
sprintf au lieu de tout ces strcpy, strcat ...

Matt...
Messages postés
65
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
29 septembre 2005
1
Si on le permet il doit il y avoir une raison.



Fais un len pour avoir le nombre de caractères de ce que l'utilisateur
a tappé puis une boucle pour tester chacun des caractères avec un
horrible message d'erreur si il repère un de ces caractères.



Ca devrait aller :-)
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009

je ne peut pas utiliser le nom de l'aplication ,c'est l'utilisateur qui doit le rendre alors il ne dois pas utiliser les symnoles >< : bref les symbole interdits quand on nomme un fichier
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Essaie ce code qui doit, je pense, correspondre a tes besoins :



#include <stdio.h>

#include <string.h>



int main(void)

{

char szNomFichier[256];

char szFullPath[256];

/* caracteres interdit */

char szCaractereInterdit[] = "\\/:?"<>|";



/* Saisie du nom du fichier */

fgets(szNomFichier, sizeof(szNomFichier), stdin);



/* On vire le retour chariot */

char *p = strchr(szNomFichier, '\n');

if (p != NULL)

*p = 0;

else

return 1;



/* On cherche les caracteres interdit */

if(strcspn(szNomFichier, szCaractereInterdit) != strlen(szNomFichier))

{

puts("Nom de fichier incorrect...\n");

return 0;

}

/* On format le chemin complet */

sprintf(szFullPath, "re%s.log", szNomFichier);

puts(szFullPath);

return 0;

}


Matt...