Pagina 1 di 1

C++ nome file da tastiera

MessaggioInviato: 31 mar 2017, 20:49
da polaris006
Ciao a tutti!
Avrei una domanda riguardante i file nel linguaggio C++, anche se in realtà avevo questo dubbio anche in C.
Come potrei fare per aprire un file che si trova in una specifica cartella, ma di cui voglio che l'utente specifichi il NOME ( in modo che se l'utente dovesse inserire il nome di un file che non si trova in quella cartella esca un messaggio di errore) ?
Se si trattasse di aprire un file in una cartella, metterei l'indirizzo della directory, etc...
Ma come faccio a scrivere che il nome del file deve arrivare da tastiera?

Re: C++ nome file da tastiera

MessaggioInviato: 31 mar 2017, 21:33
da simo85
Devi passare gli argomenti al main:

Codice: Seleziona tutto
int main (int argc, char *argv[])
{
   ...
}


argc è il numero di argomenti e argv è un puntatore di array che contiene gli argomenti passati.
Riconosci l'argomento e lo usi con la funzione per aprire il file.

fopen (C) : http://www.cplusplus.com/reference/cstdio/fopen/
ifstream (C++) : http://www.cplusplus.com/reference/fstr ... /ifstream/

Re: C++ nome file da tastiera

MessaggioInviato: 31 mar 2017, 21:35
da xyz
Quando apri il file devi spefificare la directory (il nome cartella è nato in certi sistemi operativi con la mela) nel path, ad esempio "nome_directory/file.txt" usando un carattere di separazione tra directory e nome del file. Il carattere di separazione è '/' (slash), nei sistemi operativi MS-DOS e MS-Windows usano il carattere '\' (backslash) il quale coincide con il carattere di escape usato dal C e C++, quindi se si usa nome separatore bisogna specificarne 2 di seguito "\\" ma in questo caso il programma funziona solo nei sistemi operativi della Microsoft. L'uso del carattere '/' (slash) funziona invece su tutti i sistemi Posix (come Linux o MacOSC) e anche della Microsoft.

Se si usa la funzione di libreria "fopen" del C per aprire il file, ritorna NULL se il file manca o non si ha il diritto di accesso al file, come descritto nella documentazione:

http://www.manpagez.com/man/3/fopen/

Se si usa iostream del C++ l'errore viene comunico via eccezione se abiliato o attraverso operatatore boolean:

http://www.cplusplus.com/reference/fstr ... ream/open/

Re: C++ nome file da tastiera

MessaggioInviato: 31 mar 2017, 22:44
da polaris006
grazie a entrambi