Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C++]Scrivere file(nomevariabile) in una directory

    Salve a tutti. Purtroppo ho bisogno nuovamente del vostro aiuto!

    Ho cercato sul forum come spostare un file in una cartella o creare una directory vera e propria ma nulla che sia utile al mio caso. Il mio problema è il seguente: ho delle struct persone e ognuna di queste deve avere un file nomepersona.txt in modo tale da avere un archivio con tutti i dati di ogni persona. Per non creare confusione con il progetto vorrei creare una cartella Dati contenente tutti i file di testo.
    Il problema sorge nel fatto che il nome del file .txt non è fisso ma è una variabile di input. Come posso risolvere?
    Se avete bisogno di più dettagli chiedete Vi ringrazio!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non c'è nulla da risolvere ... utilizza una stringa per l'input e apri il file con quella stringa.

    Forse è meglio che ti spieghi con del codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok, allora:


    codice:
    char nomepersone[20];
    cin>>nomepersone;
    ofile.open(nomepersone); 
    
    if (ofile.fail())
                     { 	
    cout<<"Errore apertura file"; 
                     }
    Fino ad ora ho fatto così e inserendo ad esempio Carlo.txt crea il file. Ora ho provato a fare come dici tu ma mi sa che non ho capito bene. Perchè il problema sorge nel fatto che non posso fare

    ofile.open("./Directory"nomepersone)

    Come posso risolvere?

    Grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il problema è che programmare in C++ significa studiare un po' il linguaggio e le librerie prima di scrivere codice.

    Devi semplicemente usare una stringa e unirla a quella della cartella ... sono semplicissime informazioni di base che si apprendono all'inizio dello studio ... ma bisogna studiare con metodo non andare a caso, scrivendo codice senza capire cosa si fa ...

    codice:
    	ofstream ofile;
    	string nomefile;
    	
    	cin >> nomefile;
    	
    	ofile.open("cartella/" + nomefile);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    In realtà è quello che sto provando a fare ma mi obbliga a mettere tutta la directory ma il punto è che questo programma dovrà funzionare anche su altri pc. Ho provato anche a mettere ./ prima della directory ma è come se non lo leggesse:

    codice:
    char nomecartella[40]=".\\Persone\\"; 
    
    char nomepersone[40]; 
    cin>>nomepersone;	  
    strcat(nomecartella,nomepersone); 		 
    ofile.open(nomecartella);

    Penso che sia equivalente a quello che mi hai detto di fare tu. Il punto è che non so come fare a non dover inserire tutto il percorso.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Probabilmente non sai spiegare il problema ... almeno io non l'ho ancora capito ...

    Avevi scritto

    ofile.open("./Directory"nomepersone)

    e chiedevi come risolvere ...

    Adesso lo sai fare ma hai problemi su altri PC (che non si capisce quali siano) ...

    Cerca di farci capire altrimenti non si andrà lontano.


    P.S. Dato che programmi in C++ evita di usare gli array di char e usa le string
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ok, scusami fai finta che non ho scritto nulla nell'ultimo messaggio.

    Ho risolto da solo perchè mentre scrivo sto cercando di arrivare alla soluzione e dopo il tuo messaggio mi sono illuminato e ho pensato di utilizzare la strcut per creare la directory(risolvendo il problema iniziale).


    Ora però ho un nuovo problema:

    Se nomecartella la inizializzo così,

    codice:
    string nomecartella[40]=".\\Persone\\"
    la cartella non viene creata.

    Se invece inserisco una directory già esistente ad esempio:

    codice:
    string nomecartella[40]=".\\C:\\Users\\Carlo\\"
    mi viene creato il file.

    Il problema dunque è che non mi crea la cartella. Sono riuscito ad essere chiaro? In caso contrario dimmi cosa non lo è

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No ... non sei stato chiaro ... anche perché cambi discorso facilmente e seguirti è difficile.

    Parli di creare directory poi di file creato ... insomma, non si capisce molto ...

    P.S. Scrivere

    .\\C:\\Users\\Carlo\\

    non ha senso ... se parti da C: è

    C:\\Users\\Carlo\\
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Si scusami ho sbagliato a fare copia-incolla ma non è rilevante dato che nonostante cancelli il .\\ il programma continua a non andare.

    Allora cerco di essere più generale, come faccio a creare una directory dove inserire al suo interno dei file di testo(aggiungerà lui anche l'estensione .txt) con un nome scelto dall'utente?

  10. #10
    Ok ho risolto!

    Utilizzo la funzione mkdir:

    codice:
    mkdir("C:\\Users\\Carlo\\Persone");
    Così mi crea la cartella Persone e poi con il codice scritto precedentemente vado a creare anche il file.

    Ti ringrazio comunque per l'interessamento!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.