Apagar Jogadores com arquivos em c

Estou a fazer um programa que me permite inserir e apagar jogadores com estruturas e arquivos em c. e estou com um pequeno problema em relação ao modo apagar já que ele completa o resto do ficheiro com 0 e não é isso que se pretende.

Gostaria que me dessem uma forma de conseguir apagar esses zeros do programa e que mantivesse os jogadores que já lá estão. Deixo o meu código:

void ApJogadores(){
	iJogadores=fopen("jogadores.txt","r");
	if(iJogadores==NULL){
		printf("OCORREU ERRO NA ABERTURA DO FICHEIRO");
		exit(1);
	}
	int pos;
	printf("Qual a posicao que pretende excluir:");
	scanf("%i", &pos);
	pos--;
	int i;
	
	for(i=0;i<100;i++){
		fscanf(iJogadores,"Informacoes sobre o jogador: %i %s %i/%i/%i %s %s %s \n",&ij[i].num, ij[i].nome,&ij[i].data[0],&ij[i].data[1],&ij[i].data[2], ij[i].equipa, ij[i].nac, ij[i].posicao);
	}
	
	if(pos>=0 && pos<100){
		for(i=pos;i<99;i++){
			ij[i]=ij[i+1];
		}
	}
	fclose(iJogadores);
	
	iJogadores=fopen("jogadores.txt","w");
	if(iJogadores==NULL){
		printf("OCORREU ERRO NA ABERTURA DO FICHEIRO");
		exit(1);
	}
	for(i=0;i<100;i++){
		fprintf(iJogadores,"Informacoes sobre o jogador: %i %s %i/%i/%i %s %s %s \n",ij[i].num,ij[i].nome,ij[i].data[0],ij[i].data[1],ij[i].data[2],ij[i].equipa,ij[i].nac,ij[i].posicao);
	}
	
}