Adresse de fichier

cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009 - 5 janv. 2005 à 15:07
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005 - 5 janv. 2005 à 18:40
je recherche le moyens d'accées a un fichier texte qui peut se trouver dans
un dossier

mon code est:

char adresse
printf("choisir le type et le format du produit\n");
scanf("%c",&adresse);
lecture = fopen ("C:/Documents and Settings/documents/langage C/projet/lg/&adresse","rb") ;

le type est un dossier et le format est un fichier texte

comment je dois faire pour le lire.
SVP

12 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 janv. 2005 à 15:17
pour récupérer une chaîne de caractères, il faut déclarer un tableau de char :
char filename[260];
scanf("%s", filename);

ensuite, pour rajouter un nom de dossier devant, il faut concaténer
char fullpath[260];
strcpy(fullpath, "C:/Documents and Settings/documents/langage C/projet/lg/");
strcat(fullpath, filename);

enfin ouvrir :
lecture = fopen(fullpath, "rb");
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 janv. 2005 à 15:53
Et pour le lire :



char c;



fscanf(lecture, "%c", c); // lit 1 caractère

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 janv. 2005 à 15:56
char c;
fscanf(lecture, "%c", &c); // lit 1 caractère

ne pas oublier de passer des adresses à scanf et cie (dans mon exemple il n'y a que filename car c'est déjà un pointeur vers le premier caractère de la chaîne).
0
cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009
5 janv. 2005 à 16:02
merci de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:17
ymca2003>
avec ça, tu ne crains pas les dépassements de tampon ?

char filename[260];

scanf("%s", filename);
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 janv. 2005 à 18:19
c'est à dire ?
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:28
ben si tu entre 300 caractères, tu corrompt la pile ...

fscanf(%s ...), c'est sur la liste noire !

fgets pour lire les chaines de caracteres.
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:29
fscanf(...,%s,...), scanf(%s,...), gets aussi
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 janv. 2005 à 18:30
Ben logiquement MAX_PATH = 255, donc si l"utilisateur dépasse 260 caractère, il ne pourras quand même pas ouvrir le fichier...


DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 janv. 2005 à 18:33
Ca c'est clair que c'est pas safe. Mais bon c'était surtout pour corriger le scanf("%c",&adresse);
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 janv. 2005 à 18:37
#define _MAX_PATH 260

d'où mon 260 pour avoir moins à taper. Au passage, vaut mieux allouer des tableau de taille multiples de 4 octets pour raison d'alignement des variables (le compilo ne le fera peut être pas pour nous)
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:40
"Ben logiquement MAX_PATH = 255, donc si l"utilisateur dépasse 260 caractère, il ne pourras quand même pas ouvrir le fichier..."

avant l'erreur lié à l'ouverture du fichier, tu auras corrompu la pile, c'est ça qui est grave ;)
0
Rejoignez-nous