Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    12

    [C] - Creazione di un file vuoto

    Ciao ragazzi , ho creato una struttura di questo tipo:
    codice:
    typedef char* string;
    typedef struct{
    	string filename[MAX_DIM];
    	string ext[MAX_EXT];
    	string path[MAX_DIM];
    	string full_path[MAX_DIM];
    }file_c;
    e devo creare una funzione

    codice:
     file_c* alloca_nuovo_file(const string filename,const string path);
    che prenderà in input

    filename: nome con estensione del file da creare
    path: percorso dove creare il file

    Ho pensato di dichiarare all'interno una variabile puntatore a file_c,andando naturalmente subito a fare la malloc.
    Dopo concatenare il filename alla path (es: trova.txt - c:\ = c:\trova.txt)
    in modo che mi scriva il file attraverso fopen(fullpath,"w") su disco nella directory da me dichiarata. Fino a qui tutto bene ora queste informazioni(filename,path,fullpath e l'estensione del file in questo caso .txt) le vorrei passare ai singoli membri della struttura file_c ! Come posso agire?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito il problema ma noto una cosa ...

    Questa linea

    string filename[MAX_DIM];

    equivale a

    char * filename[MAX_DIM];

    ovvero ad un "vettore di puntatori a char" ...

    Ma è quello che volevi ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    12
    Originariamente inviato da oregon
    Non ho capito il problema ma noto una cosa ...

    Questa linea

    string filename[MAX_DIM];

    equivale a

    char * filename[MAX_DIM];

    ovvero ad un "vettore di puntatori a char" ...

    Ma è quello che volevi ?
    Si ! Praticamente io dovrei creare un file vuoto ad esempio(1.txt) andando a fornire attraverso una scanf il filename in questo caso(1.txt) e la path (c:\) in modo che mi crei e salvi il file sul disco. Fino a qui ci sono arrivato il problema è che sia la path, che il filename, che la fullpath in questo caso(c:\1.txt) e sia l'estensione dovrebbero essere copiate nella struct da me creata... Ad esempio: 1.txt dovrebbe essere copiata in file_c.filename[0] , c:\1.txt in file_c.full_path[0] l'estensione txt in file_c.ext[0] ecc ecc

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Allora devi allocare la memoria per ogni vettore.

    Devi allocare lo spazio per

    filename[0]

    con la malloc e così via per le altre parti ...

    Ma non sono convinto su quello che vuoi fare ... tu vuoi restituire una struttura con tanti nomi di file o una struttura con le parti di un solo nome di file?

    Fai un esempio pratico ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    12
    Originariamente inviato da oregon
    Allora devi allocare la memoria per ogni vettore.

    Devi allocare lo spazio per

    filename[0]

    con la malloc e così via per le altre parti ...

    Ma non sono convinto su quello che vuoi fare ... tu vuoi restituire una struttura con tanti nomi di file o una struttura con le parti di un solo nome di file?

    Fai un esempio pratico ...
    Allora io ho creato questa struttura:

    typedef struct{
    string filename[MAX_DIM];
    string ext[MAX_EXT];
    string path[MAX_DIM];
    string full_path[MAX_DIM];
    }file_c;

    La funzione file_c* alloca_nuovo_file(const string filename,const string path) mi dovrà creare un nuovo file vuoto su disco... I parametri che io passerò da tastiera alla funzione sono il filename (nome con estensione del file da creare) e la path (percorso dove creare il file)...
    Una volta che io fornirò il filename,poniamo il caso sia un file di testo "ciao.txt", "ciao.txt" dovrà essere copiato in posizione iesima nel vettore string filename[MAX_DIM] della struttura da me creata(file_c),stessa cosa con la path,fullpath e estensione, che dovrò estrapolare dal filename... quindi in parole povere poniamo richiami 2 volte la stesssa funzione:


    Inserisci il filename: 1.txt
    Inserisci la path: c:\

    FILE CREATO - PERCORSO FILE: c:\1.txt

    Inserisci il filename: 2.txt
    Inserisci la path: d:\

    FILE CREATO - PERCORSO FILE: d:\2.txt

    file_c.filename[0] sarà uguale a "1.txt"
    file_c.filename[1] sarà uguale a "2.txt"
    file_c.path[0] sarà uguale a "c:\"
    file_c.path[1] sarà uguale a "d:\"
    file_c.ext[0] sarà uguale a "txt"
    file_c.ext[1] sarà uguale a "txt"
    file_c.full_path[0] sarà uguale a "c:\1.txt"
    file_c.full_path[1] sarà uguale a "d:\2.txt"

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    1) file_c è un tipo di dati, quindi non scriverai

    file_c.filename[0]

    ma dovrai usare una variabile di tipo file_c o allocarla all'interno della funzione (è una singola struttura)

    2) non si comprende (o non l'hai ancora detto) come dovrà essere scelta la posizione "libera" all'interno dei vari elementi filename[i] e simili ...

    3) come ti dicevo, comunque dovrai allocare anche i singoli elementi tramite i puntatori filename[i] e simii ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    12
    Originariamente inviato da oregon
    1) file_c è un tipo di dati, quindi non scriverai

    file_c.filename[0]

    ma dovrai usare una variabile di tipo file_c o allocarla all'interno della funzione (è una singola struttura)

    2) non si comprende (o non l'hai ancora detto) come dovrà essere scelta la posizione "libera" all'interno dei vari elementi filename[i] e simili ...

    3) come ti dicevo, comunque dovrai allocare anche i singoli elementi tramite i puntatori filename[i] e simii ...
    Esatto la posizione iesima vorrei che fosse associata dinamicamente... Come posso fare?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Devi azzerare tutti gli elementi della struttura e fare una ricerca per determinare il primo elemento libero (con i puntatori a NULL).

    Se ci proponi un codice di prova *completo* di main e funzione, *compilabile* anche se non completamente funzionante, se ne parla.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.