PDA

Visualizza la versione completa : [C++] Richiedere nome di file da tastiera


jonnyforever
12-01-2012, 15:38
printf("nome file inserito: \n");
gets(file);
fp=fopen(file,"r"); if (fp==NULL) {
printf("imposs. aprire file %s in lettura\n", file);
return -1;
}


salve a tutti amici di html, ho scritto questo codice per chiedere un nome di un file da tastiera (file di testo chiamato "file.txt" che ho già creato nella cartella di lavoro).

ma quando lancio il programma e digito il nome del file "file" mi dice imposs. aprere il file "file" in lettura perchè?? a me il codice sembra giusto e poi comunque ho dichiarato precedentemente una stringa file[NMAX] GRAZIE 1000

MItaly
12-01-2012, 15:51
Probabilmente la directory di lavoro del tuo programma non è quella in cui si trova il file. Stai usando un IDE?

Tra parentesi, la gets va evitata come la peste (rende il tuo programma suscettibile a buffer overflow).

jonnyforever
12-01-2012, 16:23
sto usando codeblocks e comunque io avrei messo anche una scanf semplice.. cosa è un IDE? grazie :)

alka
12-01-2012, 16:25
Originariamente inviato da jonnyforever
programma per chiedere nome di file da tastiera

Nel titolo manca il linguaggio di programmazione, richiesto come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Qui l'ho inserito io (per la seconda volta consecutiva).

Ti invito per il futuro a seguire i suggerimenti che ti sono stati dati in questa occasione (http://forum.html.it/forum/showthread.php?s=&postid=13527399#post13527399).

jonnyforever
12-01-2012, 16:35
alka perdona la mia ignoranza ma piano piano ci riuscirò!! dove lo inserisco il linguaggio che uso?

alka
12-01-2012, 16:53
Originariamente inviato da jonnyforever
alka perdona la mia ignoranza ma piano piano ci riuscirò!!
Non è questione di ignoranza, ma è questione di leggere e seguire quello che ti viene scritto.


Originariamente inviato da jonnyforever
dove lo inserisco il linguaggio che uso?

Nel mio messaggio ho scritto "Nel titolo manca il linguaggio di programmazione", quindi è ovvio che andrà inserito nel titolo.

E' altrettanto ovvio che mi riferisco alle discussioni che aprirai in futuro, dato che ho aggiunto "Qui l'ho inserito io".

Ho anche scritto di leggere il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887), dove c'è scritto che


Per contattare un moderatore, fate uso dei messaggi privati.

ramy89
12-01-2012, 17:00
Tu il file lo apri in lettura, quindi potrebbe essere che non te lo apre proprio perchè non l' hai ancora creato.
Quindi prova a fare (una sola volta) una fopen in scrittura:


fp=fopen(file,"w");
fclose(fp);

Una volta aperto il file in scrittura se non esiste, te ne creerà uno nuovo.
Per cui la prossima volta che apri il file in lettura sei sicuro che quel file esiste.
Anche questo era altrettanto ovvio (scherzo :malol: ).

jonnyforever
12-01-2012, 17:03
il file l ho creato e messo nella cartella di lavoro..ma non me lo fa aprire..nn saprei...

oregon
12-01-2012, 18:11
Come hai dichiarato file?

ramy89
12-01-2012, 18:46
Forse non ha i permessi.Su che sistema operativo lavori?

Loading