Problemi con struct, itoa() e memcpy()

Salve a tutti,
ho la necessità di mettere un valore numerico in campo char[4] di una struttura dati e poi trasferire tutta la truttura dati in un array per la trasmissione dati.
Sbaglio sicuramente da qualche parte ma non riesco a capire dove.
Quando eseguo la Serial.print() dei dati mi aggiunge dei caratteri in coda più o meno casuali al valore numerico.
Risulta corretto solo quando il valore numerico è costituito da tre cifre.
Ho estratto solo la parte di codice che non fa quello che vorrei che facesse da copiare e provare.

struct EEPROMObject {
  char fil11[7] = "{\"PI\":";
  char EInfe[4] = {};
  char fil12 = '}';
};
EEPROMObject StruVar;

char ComDati[sizeof(StruVar)];      // Array di comodo per la trasmissione dati

void setup() {
  Serial.begin(9600);
}

void loop() {
  CntProgress();
  for (int i=0; i<sizeof(StruVar); i++){
    Serial.print(ComDati[i]);
  }
  Serial.println();
  delay(50);
}

/* controlla presenza */
void CntProgress() {
    static int NumInf = 0;                                      // Numero da contare
    char ComNum[4];                                           // comodo per campo EInfe
     
    NumInf++;
    if (NumInf > 250){                                          // azzeramento x massimo raggiunto
      NumInf = 0;
    }
    ComNum[4] = {0};                                         // riazzeramento array
    itoa(NumInf, ComNum, 10);                             // copia in array char
    memcpy(StruVar.EInfe, ComNum, 4);               // copia in elemento struttura
    memcpy(ComDati, &StruVar, sizeof(StruVar));   // copia struttura in array da trasmettere
    Serial.print(NumInf);
    Serial.print(">");
}

Se qualcuno potesse aiutarmi …
Grazie

P.s. Hardware utilizzato Arduino UNO

Se dichiari un array di dimensione 4 in C gli indici sono da 0 a 3

Ti dichiari questo: char ComNum[4];
Quindi questo è un grosso errore: ComNum[ 4 ] = {0};
Le celle sono da 0 a 3, la 4 non esiste

Inoltre quello NON è un azzeramento di tutti gli elementi.
E' una sintassi buona solo in fase di dichiarazione, devi per forza fare un ciclo e azzeri ogni elemento (da 0 a 3)