Ouverture de fichier + chaine de caractère

Résolu
cs_igor75 Messages postés 4 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 30 novembre 2004 - 30 nov. 2004 à 18:25
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 1 déc. 2004 à 06:48
bonsoir, j'ai pas trouvé sur le forum donc voila ma question avec un ptit code explicatif :

#include<conio.h....
.......

int main()
{
char chemin[32];
FILE *fichier;

cout<<"Entrée du chemin du fichier : ";
cin>>chemin;

fichier=fopen(chemin , "rb");

if(fichier==NULL)
cout<<"erreur;

fclose(fichier);

getch();
return 0;
}

donc voila en gros je veux definir le chemin du fichier grace a une chaine de caractère mais le fopen na pas l'air dapprecier ma démarche...

merci de m'éclairer pour ce petit probleme :)

7 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
30 nov. 2004 à 21:33
En C, la fin d'une chaine de caracteres est marquée par un zero final, exemple :

char coucou[] = "Hello";

Si on decompose, ca fait :
{'H', 'e', 'l', 'l', 'o', 0 }

Voila...

+2(p - n)
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
30 nov. 2004 à 19:16
Je sais pas si c'est la cause, mais le path doit etre rentré avec des doubles slash '\' (ou un simple '/'), donc si l'utilisateur ne les rentre pas, ca ne marchera pas.

+2(p - n)
0
cs_igor75 Messages postés 4 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 30 novembre 2004
30 nov. 2004 à 20:01
dans tous les tests que j'ai fait jai attribué C:\\test.txt à chemin

j'ai oublié de préciser qu'aucune erreur n'est trouvée a la compilation et que c'est a l'execution que ca fait planter windows (message d'erreur avec "ne pas envoyer" ect....)

jai essayé en remplacant
fichier=fopen(chemin , "rb");
par
fichier=fopen("C:\\test.txt" , "rb");

>resultat ca marche(pas de plantage), donc le probleme se situe bien au niveau de fopen(chemin...)
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
30 nov. 2004 à 20:54
Veille a bien finir chemin par le zero final, je crois me souvenir ke des fonctions de recuperation omettent ce zero..
et avant tout, il aurait fallu que tu fasse un printf(chemin) pour savoir ce ke contient cette chaine..

+2(p - n)
0

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

Posez votre question
cs_igor75 Messages postés 4 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 30 novembre 2004
30 nov. 2004 à 21:27
kan je fai un printf(chemin) ca me met bien : C:\\test.txt
(donc ca c bon il me semble)

Par contre je ne vois ce que tu veu dire à propos du zero final
tu pourrai mexpliker un peu ?
le code ressemblerai a koi si j'effectue la modif avec le 0 final?

en tout cas merci de m'aider j'ai un peu de mal c'est mes tout debuts :)
0
cs_igor75 Messages postés 4 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 30 novembre 2004
30 nov. 2004 à 22:30
tu avai raison il s'agissai du probleme de 0 !
je tien a préciser qu'il fallai en fait rajouter \0 (le 0 ne suffisait pas)

merci bien , je vais pouvoir continuer mon projet
:kisses)
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
1 déc. 2004 à 06:48
coucou[6] = 0; ou coucou[6] = '\0' est exactement la mm chose, je n'ai pas dit coucou[6] = '0'...
Enfin, bonne chance

++

+2(p - n)
0
Rejoignez-nous