Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

C++ nome file da tastiera

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] C++ nome file da tastiera

Messaggioda Foto Utentepolaris006 » 31 mar 2017, 20:49

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?
Avatar utente
Foto Utentepolaris006
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 106
Iscritto il: 20 ago 2015, 18:09

1
voti

[2] Re: C++ nome file da tastiera

Messaggioda Foto Utentesimo85 » 31 mar 2017, 21:33

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/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

1
voti

[3] Re: C++ nome file da tastiera

Messaggioda Foto Utentexyz » 31 mar 2017, 21:35

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/
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[4] Re: C++ nome file da tastiera

Messaggioda Foto Utentepolaris006 » 31 mar 2017, 22:44

grazie a entrambi
Avatar utente
Foto Utentepolaris006
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 106
Iscritto il: 20 ago 2015, 18:09


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 44 ospiti