Supprimer une valeur dans un tableau en C

Ce programme recherche et supprime une valeur saisie, il comporte deux étapes:
  1. Parcourir la liste tant que la recherche n'est pas terminée et mémoriser l'indice dans une variable k.
  2. supprimer la valeur à l'indice k.
#include<stdio.h>
#include<stdlib.h>

int i,k;
struct
{
       int l;
       int t[50];
}tab;

void sup(int t[20],int k)
{
     for(i=k;i<tab.l;i++)
     t[i]=t[i+1];
     tab.l--;
}

main()
{    
      //Changer la couleur de l'interface en bleu
      system("color 9e");
      int val;
      printf("donner la dimenssion du tableau ");
      do
      scanf("%d",&tab.l);
      //la taille du tableau ne doit pas dépasser 50
      while((tab.l>=50)||(tab.l<=0));
      //remplir le tableau avec les valeurs
      for(i=0;i<tab.l;i++)
      {
                              printf("T[%d]=",i);
                              scanf("%d",&tab.t[i]);
      }
      //affichage d tableau
      printf("Affichage de tableau \n");
      for(i=0;i<tab.l;i++)
      printf("\t\tT[%d]=%d\n",i,tab.t[i]);
     
      printf("Donnez la valeur de l’élément a supprimer ");
      scanf("%d",&val);
      //Chercher la valeur dans le tableau et supprimer la
      for(k=0;k<tab.l;k++)
      if(tab.t[k]==val)
         sup(tab.t,k);
     
      puts("");
      //Affichage aprés suppression
      printf("Affichage Nouveau tableau \n");
      for(i=0;i<tab.l;i++)
      printf("\t\tT[%d]=%d\n",i,tab.t[i]);
     
      system("pause");
      return 0;
}