Obtener valor de basura después de pasar una matriz a funciones [cerrado]

Este programa en realidad programa partidos entre los miembros del equipo de Global array TeamBook.

Obtengo un valor de basura después de una llamada recursiva.

En esto, inicialmente le pido al usuario que ingrese el tamaño del equipo para el cual la computadora genera diferentes detalles de los miembros del equipo y los almacena TeamBooky luego se pasa esta matriz a ScheduleMatches()la que a su vez crea una nueva matriz de menor tamaño y pasa esta nueva matriz creada en la misma función hasta que el tamaño de la nueva matriz se convierte en 1 y luego encontramos nuestro `GANADOR``.

Esta es una función de dos

void schedulerMatches(Team a[], int round)
{
  printf("**********\n\tROUND %d !!!!!!\n***********\n", round + 1);
  int size = 0;
  for (size; *a[size].name != '\0'; size++)
    ;
  printf("Size is %d  !!\n", size); // debug
  if (size <= 2)                    // last case,exit after this
  {
    printf("Winner is!!!!!!! \n");
    displayDetails(a, 1);
    return;
  }
  else
  {
    int dd = 0;
    if (size % 2 == 0)
      dd = size / 2;
    else
      dd = ceil((double)size / 2);
    printf("%d is the new size\n", dd);
    Team newTeamBook[dd];
    memset(newTeamBook, 0, dd);
    int x = 0;
    //qsort(a, size, sizeof(Team), sortbyteamOpinion);
    if (size % 2 == 0)
    {
      for (int i = 0; i < size; i += 2)
      {
        // printf("Added in even!!!\n");
        // newTeamBook[x] = a[i];
        newTeamBook[x].key = a[i].key;
        strcpy(newTeamBook[x].name, a[i].name);
        newTeamBook[x].strongPlayer = (rand() % 9) + 1;
        newTeamBook[x].weakPlayer = 11 - newTeamBook[x].strongPlayer;
        newTeamBook[x].teamOpinion = (double)(newTeamBook[x].strongPlayer * 100) / 11;
        newTeamBook[x].matchesWon = a[i].matchesWon + 1;
        newTeamBook[x].publicOpinion = a[i].publicOpinion;
        x++;
      }
    }
    else
    {
      newTeamBook[x].key = a[0].key;
      strcpy(newTeamBook[x].name, a[0].name);
      newTeamBook[x].strongPlayer = (rand() % 9) + 1;
      newTeamBook[x].weakPlayer = 11 - newTeamBook[x].strongPlayer;
      newTeamBook[x].teamOpinion = (double)(newTeamBook[x].strongPlayer * 100) / 11;
      newTeamBook[x].matchesWon = a[0].matchesWon + 1;
      newTeamBook[x].publicOpinion = a[0].publicOpinion;
      x++;
      for (int i = 1; i < size; i += 2)
      {
        newTeamBook[x].key = a[i].key;
        strcpy(newTeamBook[x].name, a[i].name);
        newTeamBook[x].strongPlayer = (rand() % 9) + 1;
        newTeamBook[x].weakPlayer = 11 - newTeamBook[x].strongPlayer;
        newTeamBook[x].teamOpinion = (double)(newTeamBook[x].strongPlayer * 100) / 11;
        newTeamBook[x].matchesWon = a[i].matchesWon + 1;
        newTeamBook[x].publicOpinion = a[i].publicOpinion;
        x++;
      }
    }

 
    displayDetails(newTeamBook, dd);
    schedulerMatches(newTeamBook, round + 1);
    memset(newTeamBook, 0, dd);
  }

  getch();
  return;
}

Answer