Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [C] Leggere un file senza conoscerne l'indirizzo, lo sceglie l'utente

    Col C ho sempre aperto file conoscendo l'indirizzo del file da aprire. Questa volta mi si pone il problema di aprire un file di cui non conosco l'indirizzo (ovvero è l'utente a decidere quale file aprire). Ora....vorrei evitare che l'utente digiti c:/indirizzo/indirizzo/indirizzo/nomefile è piuttosto scomodo come metodo.

    Ho pensato che l'utente potrebbe velocemente ottenere l'indirizzo sulla finestra del terminale trascinando il file sopra la finestra.

    Tuttavia esistono altri metodi in C per aprire file di cui ancora non si conosce l'indirizzo del file e comunque varia ogni volta?

    Grazie in anticipo!

  2. #2
    Ci sono le API della shell per ottenere il percorso del file tramite i common dialog (le normali finestre che vengono fuori quando vuoi aprire un file in un qualunque programma, per intenderci), tuttavia è un po' inusuale usarle da un'applicazione console.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    Lo so che ci sono le commond dialog, ma appunto è completamente inusuale.

    E se creassi uno scanf in cui memorizzare una stringa casuale?
    Quando il programma si ferma ad attendere l'input nello scanf, bastaerà che l'utente trascina il file sopra la finestra di terminare ed apparirà "magicamente" l'indirizzo di quel file. Preme invio e parte.

    Si può memorizzare una stringa attraverso scanf, senza conoscerne la grandezza e quindi senza dover inizializzare un array precedentemente?

    scanf("%s",pippo[]);

    Così?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Con scanf non si può, mai puoi farti una funzione tu con getchar, char*, malloc, e realloc, array totalmente dinamico, o più semplicemente dichiarare una array da caratteri molto grande xD anche se è più pratica la seconda io preferirei la prima...
    anzi ci devo avere una funzione fatta da qualche parte xD
    E ricordati di mettere null a fine stringa!

  5. #5
    In realtà per un buffer che abbia come scopo l'input di un percorso basta dichiararlo di dimensioni MAX_PATH, visto che praticamente nessun programma (Windows Explorer incluso) gestisce percorsi di lunghezza maggiore.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.