|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1060
|
[C++]Allocazione dimanica della memoria
Ragazzi non so come utilizzare l'allocazione dimanica della memoria
se io dichiaro un array di char es: char array[20] questo contiene solo 20 caselle e se per esempio io faccio una gets(array), potrò memorizzare una parola di soli 20 caratteri. Ora se io velessi memorizzare un numero di caratteri indefinito, come faccio?? Se faccio char *array = new char [20] non ho sempre specificato il numero di cassetti disponibili? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Devi usare un puntatore a caratteri, quindi char *.
Inizializzandolo con "new char[20]" avresti un puntatore con 20 byte allocati, quindi il risultato sarebbe lo stesso (a meno che tu non usi realloc dopo e lo ingrandisci). P.S.: ma non fai prima con std::string? Codice:
#include <string>
using namespace std;
int main(int argc, char * argv[])
{
string ciccio = "Stringa di lunghezza pare e piace a te.";
return 0;
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1060
|
Ok ho fatto come mi hai consigliato tu però adesso sorge un altro problema:
prima avevo questa struttura struct { char nome[20], cognome[20]; }dati[10]; e la scrivevo su un file in questo modo: for(int i=0; i<=10; i++) stream.write(reinterpret_cast <char*> (&dati[i]), sizeof dati[i]); adesso è in questo modo: struct { string nome, cognome; } dati[10]; però come faccio a scriverla sul file errori grazie dell'aiuto ciao Ultima modifica di Energy++ : 01-07-2006 alle 20:05. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ah se devi scrivere su file, allora fai prima con array di caratteri a grandezza fissa, come quelle che avevi definito prima.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:19.



















