Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81

    [c] Visualizzare e risalire directory

    Buonasera, dovrei realizzare un programma in c che a partire dalla directory corrente, risalga fino alla directory padre e visualizzi ad ogni passaggio il path. Ho provato varie soluzioni, ma non riesco nè a visualizzare il path corrente e nè a risalire la directory. Avete qualche consiglio da darmi . Grazie

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    codice:
    int main(int argc,char **argv)
    {
        puts(argv[0]);
    }
    In pratica in questo modo stampi il path,solo che mi ricordo che poi sono venuti fuori altri problemi.Come ad esempio se fai partire il tutto da terminale.Ma in generale se lo fai partire normalmente,ti stampa il path.
    Puoi per esempio copiarlo in una stringa e manipolarlo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    utilizza getcwd() per ottenere la directory corrente di lavoro
    oppure la GetCurrentDirectory()

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81
    Grazie!! Lavoro da terminale, ma proverò con puts(argv[0]);.
    Ho provato ad usare getCwd() ma probabilmente sbaglio a passare i parametri, potresti farmi un esempio di utilizzo???

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    codice:
    char directory[256];
    getcwd(directory, sizeof(directory));

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81
    Grazie, a questo punto posso utilizzare directory per stampare il path ???
    E per risalire il path puoi darmi qualche suggerimento ??

  7. #7
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    In effetti anche la getcwd è buona,ma funziona solo su windows e comunque in generale le funzioni di windows.h su msdn hanno una documentazione secondo me scadente,anche se devo dire che rispetto all' altro metodo copre il difetto del fatto che agrv[0] può non essere il path dell' eseguibile.
    Su windows il metodo migliore è comunque la getcwd.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    non ho capito bene tu vuoi stampare una cosa del genere?
    codice:
    C:/bla/ahah/nonsaprei/
    C:/bla/ahah/
    C:/bla/
    C:/

  9. #9
    Di che piattaforma stiamo parlando?


    Originariamente inviato da ramy89
    In effetti anche la getcwd è buona,ma funziona solo su windows
    Macchestaiaddì? getcwd è una funzione eminentemente POSIX (infatti "nasce" in <unistd.h>, e la relativa manpage dice "getcwd() conforms to POSIX.1-2001."), la sua controparte Windows (con prototipo pressoché identico) è GetCurrentDirectory. Se su Windows trovi la getcwd è per compatibilità con i sistemi POSIX (*NIX).
    e comunque in generale le funzioni di windows.h su msdn hanno una documentazione secondo me scadente,
    Non mi pare proprio, la MSDN in generale è un'ottima documentazione di riferimento per le tecnologie Microsoft; ci sono delle zone non troppo documentate, ma le "core API" di windows.h in generale non rientrano tra queste.
    In base a cosa dici che la documentazione MSDN è scadente?
    anche se devo dire che rispetto all' altro metodo copre il difetto del fatto che agrv[0] può non essere il path dell' eseguibile.
    argv[0] è completamente inaffidabile, può contenere qualunque cosa.
    Su windows il metodo migliore è comunque la getcwd.
    Su Windows il metodo "nativo" è la GetCurrentDirectory; su Linux/BSD/... il metodo "nativo" è la getcwd. Nessuno dei due metodi è standard C, dato che il C non prevede alcuna funzione standard per la gestione delle directory (si limita esclusivamente ai file).
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81
    Esattamente, in pratica devo risalire dalla directory alla radice e analizzare ad ogni livello i file presenti, da qui la necessità di stampare i vari path e analizzare il contenuto. Lavoro su Linux.

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.