Apertura dinamica file .txt

di il
5 risposte

Apertura dinamica file .txt

Buongiorno a tutti, cerco di esporvi il mio problema. Io sto cercando di fare un programmino console win32 che, fra le altre cose, apra un file di testo. La cosa di per sè è semplice, ma il mio problema è che vorrei aprire il file che voglio senza dover ogni volta ricompilare tutto se cambio nome al file .txt.

Vi posto il mio codice:

...
         FILE *fd;
			fd = fopen("C:\\Users\\prova.txt", "r");
...

In questo modo mi apre il file, ma se dopo io decido che il file si debba chiamare "prova111.txt" ecco che devo ricompilare tutto, e questa non è una cosa sensata.
Io vorrei riuscire in questo mantenendo però la funzione "fopen" per aprire il file perchè mi serve proprio quella funzione. Potete aiutarmi? Non so più dove sbattere la testa.

Grazie mille a tutti

5 Risposte

  • Re: Apertura dinamica file .txt

    Puoi utilizzare i parametri da linea di comando; se cerchi argc e argv con google troverai una marea di esempi.
    Un'altra alternativa è quella di inserire il nome del file all'interno di un file INI ed utilizzare l'API GetPrivateProfileString() e anche per questa con google troverai una marea di esempi.
  • Re: Apertura dinamica file .txt

    Io avevo provato a scrivere una cosa del tipo:
    
             FILE *fd;
    			string fileName;
    			cout << "Nome file:	";
    			getline (cin, fileName);
    			fd = fopen(fileName, "r");
    
    Però mi rilascia un errore alla riga "fd = fopen(fileName, "r") perchè non può convertire un tipo "std::string" in "const char". Come si potrebbe modificare il mio codice?E' tutto sbagliato?
  • Re: Apertura dinamica file .txt


    Non offenderti ma basta così poco
  • Re: Apertura dinamica file .txt

    Grazie per il suggerimento!! In effetti per risolvere quel problema bastava poco!
    Adesso il mio codice è:
    
             FILE *fd;
    			string fileName;
    			cout << "Nome file:	";
    			cin >> fileName;
    			const char* fileName1 = fileName.c_str();
    			fd = fopen(fileName1, "r");
    
    Problemi di compilazione non ne da, ma penso che ci sia qualcosa che non va, perchè sembra che non capisca che file io vorrei aprire.
    Ammettiamo di avere sul desktop un file chiamato "prova.txt": quando io inserisco il nome del file devo scrivere solo "prova", "prova.txt" o addirittura tutto il percorso del file?
    Forse il codice non è corretto...
  • Re: Apertura dinamica file .txt

    1) metti l'estensione: file con lo stesso nome ma estensioni diverse non sono lo stesso file!

    2) se il file eseguibile è nella stessa cartella del file da aprire metti soltanto il nome. Se è in un altra cartella - o metti tutto il percorso - o metti il percorso relativo (ad esempio "/dir/prova.txt" se la cartella dir è sottodirectory di quella dell'eseguibile)
Devi accedere o registrarti per scrivere nel forum
5 risposte