Debutant : test NULL en C++

Résolu
cs_Spacekiller Messages postés 11 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2008 - 9 févr. 2005 à 13:07
cs_Spacekiller Messages postés 11 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2008 - 10 févr. 2005 à 07:36
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

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
9 févr. 2005 à 18:16
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...
3
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
9 févr. 2005 à 13:37
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
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
9 févr. 2005 à 14:13
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++
0
cs_Spacekiller Messages postés 11 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2008
9 févr. 2005 à 15:26
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?
0

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

Posez votre question
cs_Spacekiller Messages postés 11 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2008
9 févr. 2005 à 15:31
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?
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
9 févr. 2005 à 18:54
stat devrait être cool.


// Ma participation à la saturation du net:
//http://hylvenir.free.fr
0
cs_Spacekiller Messages postés 11 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2008
10 févr. 2005 à 07:36
Merci pour toutes ces reponse :)
0
Rejoignez-nous