Oppure

Loading
28/07/08 11:35
Ciao a tutti,

riprendo la discussione: pierotofy.it/pages/extras/forum/2/38187-problema_visualizzare_i_file_in_una_directory/
ormai fuori topic...

come posso usare calloc???
perchè non ho capito benissimo...
grazie ciao
28/07/08 12:47
gantonio
Mostra il codice che utilizzi per allocare inizialmente la stringa ...
aaa
28/07/08 13:07
è 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
28/07/08 15:09
gantonio
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 28/07/08 15:10
aaa
28/07/08 17:45
ciao,

ho provato e considerando le variabili:
  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)
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
28/07/08 21:11
gantonio
Ma che c'entra questo codice con la calloc?

E di che errore parli?
aaa
28/07/08 21:42
ciao,
scusa che sbadato, i codici sono:
variabili:
 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:
//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
28/07/08 22:10
gantonio
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 ?
aaa