C++ Ouverture / Fermeture de fichiers
Résolu
zivodul8
Messages postés
248
Statut
Membre
-
zivodul8 Messages postés 248 Statut Membre -
zivodul8 Messages postés 248 Statut Membre -
Bonjour.
Voila j'ai un petit souci avec un programme en C++ au niveau de mes fichiers séquentiels. Le plus simple est de vous le montrer (^^) :
void Telecharger_Fichier ( char fiVehicule[TMAX], Vehicule Tab[TMAX], int &NbVehicules)
{
int i;
NbVehicules=0;
ifstream fichier(fiVehicule);
if (fichier.fail())
{
cout<<"Impossible d'ouvrir le fichier car le fichier est inexistant."<<endl;
exit(-1);
}
else
{
i=0;
fichier>> Tab[i].Immat;
fichier>> Tab[i].Marq;
fichier>> Tab[i].Annee;
fichier>> Tab[i].NbKm;
fichier>> Tab[i].NbPla;
fichier>> Tab[i].Coul;
fichier>> Tab[i].PrixE;
fichier>> Tab[i].Forf;
fichier>> Tab[i].Date.jour;
fichier>> Tab[i].Date.mois;
fichier>> Tab[i].Date.annee;
fichier>> Tab[i].Etat;
while(fichier.eof()==0)
{
i++;
fichier>> Tab[i].Immat;
fichier>> Tab[i].Marq;
fichier>> Tab[i].Annee;
fichier>> Tab[i].NbKm;
fichier>> Tab[i].NbPla;
fichier>> Tab[i].Coul;
fichier>> Tab[i].PrixE;
fichier>> Tab[i].Forf;
fichier>> Tab[i].Date.jour;
fichier>> Tab[i].Date.mois;
fichier>> Tab[i].Date.annee;
fichier>> Tab[i].Etat;
}
}
NbVehicules=i;
cout<<"\nLe parc contient "<<NbVehicules<<" vehicule(s).\n";
fichier.close();
}
Comme vous pouvez le voir, il s'agit d'une procédure qui copie un fichier séquentiel dans un tableau à 1 dimension. Mon problème est que quand je met un nom de fichier erroné, il ne m'affiche pas le message d'erreur ("Impossible d'ouvrir le fichier car le fichier est inexistant."). Problème identique lorsque je veux recopier mon tableau dans le fichier :S Par contre aucun souci lorsque je met le bon nom de fichier.
Si quelqu'un pouvait m'aider ça serait vraiment très sympa. Merci!
Voila j'ai un petit souci avec un programme en C++ au niveau de mes fichiers séquentiels. Le plus simple est de vous le montrer (^^) :
void Telecharger_Fichier ( char fiVehicule[TMAX], Vehicule Tab[TMAX], int &NbVehicules)
{
int i;
NbVehicules=0;
ifstream fichier(fiVehicule);
if (fichier.fail())
{
cout<<"Impossible d'ouvrir le fichier car le fichier est inexistant."<<endl;
exit(-1);
}
else
{
i=0;
fichier>> Tab[i].Immat;
fichier>> Tab[i].Marq;
fichier>> Tab[i].Annee;
fichier>> Tab[i].NbKm;
fichier>> Tab[i].NbPla;
fichier>> Tab[i].Coul;
fichier>> Tab[i].PrixE;
fichier>> Tab[i].Forf;
fichier>> Tab[i].Date.jour;
fichier>> Tab[i].Date.mois;
fichier>> Tab[i].Date.annee;
fichier>> Tab[i].Etat;
while(fichier.eof()==0)
{
i++;
fichier>> Tab[i].Immat;
fichier>> Tab[i].Marq;
fichier>> Tab[i].Annee;
fichier>> Tab[i].NbKm;
fichier>> Tab[i].NbPla;
fichier>> Tab[i].Coul;
fichier>> Tab[i].PrixE;
fichier>> Tab[i].Forf;
fichier>> Tab[i].Date.jour;
fichier>> Tab[i].Date.mois;
fichier>> Tab[i].Date.annee;
fichier>> Tab[i].Etat;
}
}
NbVehicules=i;
cout<<"\nLe parc contient "<<NbVehicules<<" vehicule(s).\n";
fichier.close();
}
Comme vous pouvez le voir, il s'agit d'une procédure qui copie un fichier séquentiel dans un tableau à 1 dimension. Mon problème est que quand je met un nom de fichier erroné, il ne m'affiche pas le message d'erreur ("Impossible d'ouvrir le fichier car le fichier est inexistant."). Problème identique lorsque je veux recopier mon tableau dans le fichier :S Par contre aucun souci lorsque je met le bon nom de fichier.
Si quelqu'un pouvait m'aider ça serait vraiment très sympa. Merci!
4 réponses
-
L'erreur doit venir du premier if.
Je crois qu'il faut tester "if (!fichier.fail())" et non "if (fichier.fail())".
Cela devrait régler le problème. -
J'y ais cru un instant... Seul bémol maintenant, même quand je met le bon nom de fichier il m'écrit le message d'erreur "Impossible d'ouvrir le fichier car le fichier est inexistant." :S
-
Je ne sais pas d'ou peut venir le probleme. Avant il s'ouvrait correctement ?
-
Quand je met le bon nom de fichier, il n'y a aucun souci. Lorsque je met un nom erroné l'ouverture "se fait quand même" mais du coup il compte aucun véhicule, autrement dit il considère le fichier comme vide alors qu'il est inexistant.