()
Newbie
Messaggi:
Iscritto:
|
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Mostra il codice che utilizzi per allocare inizialmente la stringa ...
|
|
()
Newbie
Messaggi:
Iscritto:
|
è proprio quello il punto...
non so bene come usare calloc, vale a dire, ho visto il prototipo:
void *calloc(size_t num, size_t size);
ora mi chiedo:
1 come faccio ad "assegnare" la funzione alla variabile???
2 trattandosi di una variabile char, cosa devo scrivere al posto di size_t num e siza_t size ???
grazie ciao
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Se vuoi usare la calloc per allocare una stringa di n caratteri, scrivi
char *stringa;
stringa = (char *)calloc(n, sizeof(char));
Cosa c'e' di difficile?
P.S. Continui a scrivere nel forum di C++ ma usi funzionalita' del C e non del C++ ... secondo me, o questo thread viene spostato in C oppure dobbiamo discutere dell'allocazione di memoria con la
new
del C++ ...
Ultima modifica effettuata da gantonio il 28/07/2008 alle 17:10 |
|
()
Newbie
Messaggi:
Iscritto:
|
ciao,
ho provato e considerando le variabili:
Codice sorgente - presumibilmente C/C++ |
int dim;
char *tlist;
char pf[MAX_PATH];
strcpy(pf, p);
strcat(pf, "\\*.*");
|
il seguente codice genera un errore (non di compilazione ma durante l'esecuzione del programma)
Codice sorgente - presumibilmente C/C++ |
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf ("[%s]\n", fd.cFileName);
char pf[MAX_PATH];
strcpy(pf, p);
strcat(pf, "\\");
strcat(pf, fd.cFileName);
search(pf);
}
|
ciao e grazie
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Ma che c'entra questo codice con la calloc?
E di che errore parli?
|
|
()
Newbie
Messaggi:
Iscritto:
|
ciao,
scusa che sbadato, i codici sono:
variabili:
Codice sorgente - presumibilmente C/C++ |
WIN32_FIND_DATA fd;
int dim;
char *tlist;
char pf[MAX_PATH];
strcpy(pf, p);
strcat(pf, "\\*.*");
|
il codice che genera l'errore (in pratica la chiusura dell'applicazione con il messaggio Si è verificato un errore in ricerca.gantonio2.exe. L'applicazione verrà chiusa.) è questo:
Codice sorgente - presumibilmente C/C++ |
//questo codice viene eseguito se si tratta di un file (lo scopo è inutile: era una prova)
printf ("\t%s\n", fd.cFileName);
strcpy(tlist, pf);
size_t dim = strlen(tlist);
tlist = (char *)calloc(dim, sizeof(char));
|
spero di essermi spiegato,
grazie ciao
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Ma tu usi la strcpy PRIMA della calloc?
Cioe' ... tu invece di preparare il contenitore e versare l'acqua, prima versi l'acqua e poi prepari il contenitore?
Non hai molta dimestichezza con i puntatori ...
E poi ... scusa ... ma a cosa servirebbe tlist ?
|
|
()
Newbie
Messaggi:
Iscritto:
|
ciao,
il mio scopo è semplicemente ottenere un vettore con tutta la lista dei file presenti nella directory e nelle sottodirectory. La tlist (ovvero lista temoranea) lho creata per non modificare il pf. In pratica io voglio fare così:
-copio pf in tlist
-tolto gli ultimi 3 caratteri (ovvero *.*) da tlist
-aggiungo a tlist il nome del file
-copio tlist nel vettore
ora l'unico passaggio che non so fare è quello del togliere sti 3 caratteri. Siccome iniziamo ad andare per le lunghe mi puoi fare vedere la pratica e poi se non la capisco ti faccio qualche domanda??? così in massimo 3 post abbiamo concluso... ok???
te ne sarei veramente grato...
ciao
|
|