Go Down

Topic: Stampa di un array. (Read 972 times) previous topic - next topic

brunialti

#5
Oct 02, 2012, 09:18 pm Last Edit: Oct 02, 2012, 09:19 pm by brunialti Reason: 1
Eh dai, non fare così...  :~ la dimensione la decidi tu, ovviamente, in base al calcolo della lunghezza dell'array... o della lunghezza della stringa di stampa... e poi almeno la esaurisco alla compilazione e non al runtime ...
Ricordati che ogni volta che usi operatore + con string, bisogna fare un realloc implicito. con il pericolo (o la certezza se sei pessimista) che se la stringa non riesce ad espandersi in una area contigua, alloca un novo spazio lasciando i famosi "buchi" nella memoria heap. come un formaggio svizzero

brunialti

#6
Oct 02, 2012, 09:27 pm Last Edit: Oct 02, 2012, 09:29 pm by brunialti Reason: 1
va bene. proviamo una altra via. visto che leggi da una seriale, immagino che i caratteri siano o numeri interi di tipo byte (uint_8) o char.
A questo punto usi una bella union sul tuo buffer che cosè potrai "vedere ed usare" sia come byte che come char a seconda della necessità e inoltre non allochi due buffer (uno per array e uno per stringa). Basta mettere un bel "tappo" alla stringa (uno 0 alla fine dei caratteri letti da rs232).

Code: [Select]
union rs_buf{
 byte b[512];  // o lungo quanto ti pare alla faccia di tuxduino :-)
 char c[512];
 };

rs_buf array;


ma guarda che mi tocca fare per farvi contenti ....

tuxduino


Go Up