17/01/21 10:53
mano17
Ciao tutti, è da poco che mi sono approciato agli array e mi trovo a dover mettere in un unico array char il contenuto di due array bidimensionali di tipo byte.
Ho scritto questo:
Il frame finale dovrà essere composto da valori in char dei numeri contenuti negli array, e se inferiori a 9 dovrò scrivere 09, in modo da mantenere sempre lo spazio di due cifre.
Gli array non conterranno mai numeri superiori a 70.
Se lancio un solo array funziona correttamente, ma se lancio entrambi gli arrai, oltre a non scrivere correttamente nel buffer_A, si impalla il micro...
Cosa sbaglio?
Qualche consiglio?
Grazie.
Ho scritto questo:
byte A1[3][5]; byte A2[2][7]; byte indice=0; char buffer_A[90]; for (byte i=0;i<3;i++){for(byte c=0;c<5;c++){forma(A1[i][c]);indice=indice+2;} } for (byte a=0;a<2;a++){for(byte b=0;b<7;b++){forma(A2[a][b]);indice=indice+2;} } void forma(byte X){ //per convertire byte in char #define N 2 char a[N]; itoa(X,a,10); //converto il numero byte X in char byte l1 = strlen (a); memmove (a + (N - l1), a, l1); memset (a, '0', N - l1); //riempio di 0 i vuoti for (byte i=0;i<N;i++){buffer_A[indice+i+1]=a[i]; }Praticamente la funzione forma serve per mettere lo 0 davanti alle unità nel caso in qui il numero che gli passo è <10.
Il frame finale dovrà essere composto da valori in char dei numeri contenuti negli array, e se inferiori a 9 dovrò scrivere 09, in modo da mantenere sempre lo spazio di due cifre.
Gli array non conterranno mai numeri superiori a 70.
Se lancio un solo array funziona correttamente, ma se lancio entrambi gli arrai, oltre a non scrivere correttamente nel buffer_A, si impalla il micro...
Cosa sbaglio?
Qualche consiglio?
Grazie.
Ultima modifica effettuata da mano17 17/01/21 10:54