Getenv("AppData");

di il
2 risposte

Getenv("AppData");

Ciao,
ho un programmino che ogni 10 secondi mi scrive dei dati su un file, denominato "DappData.txt".
Inizialmente utilizzavo il seguente: ofstream MyFile("DappData.txt");
che mi scriveva nella directory dove risiedeva il programma.

Adesso però devo spostare il file che scrive in C:\Users\<nomeutente>\AppData\Roaming\FLos\

Ho cercato in rete e ho trovato questo: char* appData = getenv("AppData");
(ho dovuto anche attivare la _CRT_SECURE_NO_WARNINGS)

Per cui ho scritto:
char* appData = getenv("AppData");
char appData2[] = "\FLos\DappData.txt";
strcat(appData, appData2);
ofstream MyFile("appData");

Siccome non vedevo il file ho provato a leggere il path: wprintf_s(L"Path: %ls\n", appData);
ed il risultato è: Path: ????????????????????????a??????????????


MORALE:
Potreste scrivermi le due o tre linee di codice in C++ per poi fare palesemente un bel copia e incolla al mio programmino..
..e ritornare al C# dimenticando per un bel pò C++ ?

Grazieeeeeee

2 Risposte

  • Re: Getenv("AppData");

    Alcune osservazioni in ordine sparso:
    • il carattere '\' (backslash) non va mai usato da solo nelle stringhe hard-coded, altrimenti il carattere successivo viene interpretato come carattere speciale; usa il carattere '/' oppure raddoppia il backslash ('\\'); quindi
      char appData2[] = "\\FLos\\DappData.txt";
    • se una funziona di libreria ritorna un puntatore, non lo puoi usare per altri scopi se non copiarne il contenuto in una struttura da te appositamente allocata, perché la validità di quel puntatore non è garantita nel tempo: quindi quello
      strcat(appData, appData2);
      non lo puoi fare;
    • qui trovi un esempio di uso di getenv http://cplusplus.com/forum/windows/197940/
  • Re: Getenv("AppData");

    YES !
    appData = getenv("appdata");
    appData += "\\FLos\\DappData.txt";

    Love
Devi accedere o registrarti per scrivere nel forum
2 risposte