PDA

Visualizza la versione completa : [C++] Testare se un puntatore ad un file Ŕ null


afrappe
07-05-2007, 11:15
ho questo codice


#include <cstdlib>
#include <iostream>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
char name[100];
int age;
char nameFromFile[100];
int ageFromFile;

FILE * myFile; //puntatore al file

fprintf(stdout,"Inserisci il tuo nome e la tua eta\n");
fscanf(stdin,"%s%d",name,&age);

myFile = fopen("test.txt","w");

if(myFile == NULL)
{
fprintf(stdout,"ATTENZIONE: file non valido\n");
exit(1);
}


system("PAUSE");
return EXIT_SUCCESS;
}


nella cartella dell'aplicazione non ho nessun file di testo("test.txt") mi aspetto quindi che entri nel blocco "if" e mi segnali l'errore come invece non succede nulla, dove sbaglio?

shodan
07-05-2007, 12:51
Originariamente inviato da afrappe
ho questo codice


myFile = fopen("test.txt","w"); // <--

if(myFile == NULL)
{
fprintf(stdout,"ATTENZIONE: file non valido\n");
exit(1);
}





Sei davvero sicuro che il file non venga creato? Il modificato "w" lo crea a prescindere il file. E se il file giÓ esiste lo tronca.

Samuele_70
07-05-2007, 12:55
w write text mode (truncates file to zero length or creates new file)

La fopen in modalitÓ testo in scrittura "w", cancella il contenuto del file o ne crea uno nuovo, se non esiste giÓ.

Con l'istruzione :


if(myFile == NULL)

Verifichi se il file sia effettivamente stato creato (salvo spazio su disco sufficiente, nome del file corretto, etcc.)
Il controllo come lo intendevi tu si applica (ed a senso) solo per i file in modalitÓ lettura.

afrappe
07-05-2007, 16:45
effettivamente avete ragione, il file viene creato a prescindere.
Cmq ho tolto i permessi di scrittura alla cartella ed in quel caso entra nel blocco if come mi aspettavo
kiarito l'arcano. Grazie a tutti :ciauz:

Loading