Debutant : test NULL en C++ [Résolu]

Signaler
Messages postés
11
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
23 septembre 2008
-
Messages postés
11
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
23 septembre 2008
-
Bonjour, voila je suis debutant et j'ai quelques problemes avec les fichiers.
Lorsque je veux tester si un fichier n'existe ou pas j'ai toujour une erreur fatale qui s'affiche. C'est tout simple mais je n'arrive pas a la faire marcher
Voici le code :
#include
#include <stdio.h>



void main()
{
const char ret='\n';
FILE * fichier;
char *nomf;


cout<<"Entrer le nom du fichier : ";
cin>>nomf;
fichier=fopen (nomf,"r");
if (fichier==NULL) {
cout<<"Erreur";
}
}

Merci d'avance :)

7 réponses

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

Bonsoir



Copier / Coller d'un bout de code que j'ai posté dans une question

http://www.cppfrance.com/forum.v2.aspx?ID=387301




#include <stdio.h>



int FileExist(char * lpChemin)

{

FILE *fp;

fp = fopen(lpChemin, "r");

if(fp == NULL)

return 0;

fclose(fp);

return 1;

}



int main(void)

{

if(FileExist("c:\\toto.txt"))

printf("Le fichier existe\n");

else

printf("Le fichier n'existe pas ou vous ne pouvez pas y acceder\n");



return 0;

}


mais comme l'a dit Arnotic ca ne veut pas
dire que le fichier n'existe pas. En C il n'y a pas de fonction (à ma
connaissance) qui te dit qu'un fichier n'existe ou pas.



Matt...
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Salut,

plusieurs points,

1. Tu mélanges du C et du C++, pk ?

2. Tu utilises un include 'déprécié' du C++ (certains diront qui n'a jamais été dans le C++)

3. Tu lis avec cin dans un char* au lieu dans char nomf[32]; par exemple (c'est de là d'où vient ton bug)

4. main doit être int main() pas void.

5. change de compilo. y'en a des gratuits beaucoup mieux. ( VC, GCC, ... pour les plus connus).



[code]

// Une autre version - non testée, j'suis en pleine digestion donc pas la courage

#include

#include <string>

#include <fstream>

using namespace std;



int main()

{

cout<<"Entrer le nom du fichier :\n ";

string nomf;

cin>>nomf; // utilisation d'une std::stirng pour éviter les buffer overflow

ifstream file( nomf.c_str() ); // Ouverture d'une fichier en lecture

if ( !file )

cout << "erreur\n"; // Le fichier n'existe pas, ou pas les droits en lecture

}


// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
if(GetFileAttributes(szfile) & 0x80000000) ABSENT

sera mieux. car si le fichier est déjà ouvert en exclusif ton prog dira qu'il n'existe pas...

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
11
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
23 septembre 2008

En fait si tu avais un code uniquement C++ jte serai tres reconnaissant, paske la jdois rendre un truc sur les fichiers et on a presque pas touché au code C.
Et pourquoi faut-il utiliser int main() au lieu de void?
Messages postés
11
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
23 septembre 2008

oops excuse jai cru que le ifstream file( nomf.c_str() ); ifstream file( nomf.c_str() );
était du C . Enfin torai pas une version avec fopen plutot?
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
stat devrait être cool.


// Ma participation à la saturation du net:
//http://hylvenir.free.fr
Messages postés
11
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
23 septembre 2008

Merci pour toutes ces reponse :)