for(partida;partida<sumador+1;partida++)
Para empezar ese for está mal. El primer elemento del for sirve para asociar un valor inicial a las variables involucradas en el bucle. for ( partida; ... ) ahí no estableces ningún valor.
otra cosa sería
for(partida=0;partida<sumador+1;partida++)
o, si el valor de inicio ya venía definido antes, puedes dejar el campo en blanco.
for( ;partida<sumador+1;partida++)
Esto funciona con cualquiera de los tres campos del for. De echo, for( ; ; ) compila y es equivalente a while ( 1 ).
Y lo siento pero el tiempo que me requiere pelear con el laberinto que has montado no lo dispongo.
Te propongo una cosa... mejora la legibilidad de tu código, me da igual que solo te falle una cosa, hazlo, consigue que este código sea legible y luego te ayudamos a resolver tu problema.
Vas a ganar por partida doble... por un lado aprenderás a hacer las cosas bien, y por otro acabarás con un código que funciona.
Procura no usar variables globales, no son necesarias y dificultan la lectura del código... lo que tengas que usar en una función, pásalo como parámetro.
Para las partidas usa esto mejor:
struct jugador
{
char nom_jug[ 40 ];
char ced_jug[ 8 ];
};
struct partida
{
struct jugador jugador1;
struct jugador jugador2;
};
int main( )
{
struct partida partidas[500];
// ...
}