PDA

Visualizza la versione completa : [c++]


mageta
14-12-2003, 22:08
ho questo peoblemino:
char dato[50];
strcpy(a.data, dato[0]);

a.data invece fa parte di una struttura ed è un array di caratteri
mi da questo errore il compilatore, probabilmente perchè non riesce a copiare una char normale_ in un array di caratteri
"daylog.cpp": daylog.cpp error: invalid conversion from `char' to `const char*' at line 82


avete qualche idea per fregarlo?

Leevon
14-12-2003, 22:42
non è che nn riesce a fare il passaggio, è che gli argomenti della funzione strcpy sono dei const char*, praticamente puntatori a stringhe....tu li gli stai passando un carattere, se vuoi mettere un carattere in un altro, è sufficente un'assegnazione, ma strcpy serve a copiare stringhe, non caratteri...prova scrivendo:

a.data[i]=dato[0];

ricordati che scrivendo char dato[N] crei un puntatore ad un array di caratteri esattamente come se scrivessi char *dato, con la differenza che nel primo caso allochi la memoria in maniera statica, nel secondo devi chiamare malloc o new, per allocarla....

mageta
14-12-2003, 22:50
sembra che funzioni (il compilatore non da problemi) senti non ho capito pero' perchè bisogna mettere a a.data le parentesi [] con dentro la i.

che fa? forse me lo hai spiegato sotto ma non l'ho ben capito.

thx

Leevon
14-12-2003, 23:01
Allora...
Tu hai detto che a.data è un array di caratteri, un array è sostanzialmente un puntatore alla tua memoria, che punta alla prima posizione di una serie di dati...

quando tu scrivi:

char dato[50];

Il programma alloca in memoria 50 caratteri, e assegna al puntatore "dato" l'indirizzo del primo elemento. A questo punto però hai bisogno di un indice per far "spostare" il puntatore nell'elemento a cui ti riferisci, io ho messo la i per indicare un generico indice all'array. Devi comprendere bene la flessibilità degli array in C per poterla sfruttare appieno, studiati i puntatori, e vedrai che tutto sarà più chiaro....

Loading