<nowiki>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 25
#define MAX 32

void shuffle(char array[][MAXLEN], int max);

int main( int argc, char *argv[] )
{
  int q; /*counter*/
  char zazza[MAX][MAXLEN];
  int i_max = 0;
  
/*apro file*/    
  FILE *inPtr;
  FILE *outPtr;
  
  if( argc != 3 )
  {
    printf("inserire 3 valori\n");
  } 
  else{
    if( (inPtr = fopen( argv[1], "r" )) == NULL )
    {
      printf("impossibile aprire il primo file\n");
    }
    else
    {
      if( (outPtr = fopen( argv[2], "w" )) == NULL )
      {
      printf("impossibile aprire il primo file\n");
      }
      else
      {
/*fine inizializzazione*/ 
/*inizio programma*/
     
        fprintf(outPtr, "Quarti di finale campionato 2006/2007\n");
        fprintf(outPtr, "Andata\n\n");
        
        while(!feof(inPtr))
        { 
          i_max++;
          fgets(zazza[i_max], MAXLEN, inPtr);
          strcpy(&zazza[i_max][0], &zazza[i_max][2]);          
          
        }
        
         /*controllo che siano in numero pari*/
        if(i_max % 2 != 0)
        {
          printf( "errore\n" );
          return 1;
        }
        
        shuffle( zazza, i_max);
                
        for(q = 1; q <= (i_max / 2); q++ )
        {
          fprintf( outPtr, "%s - %s\n", zazza[ q ], zazza[ q + (i_max / 2) ]);
        }
        
        fprintf(outPtr, "Ritorno\n\n");
        
        for(q = 1; q <= (i_max / 2); q++ )
        {
          fprintf( outPtr, "%s - %s\n", zazza[ q + (i_max / 2) ], zazza[ q ]);
        }
        
       
/*fine programma*/
        fclose( outPtr );
      }/*chiudo terzo else*/
      fclose( inPtr );
    }/*chiudo secondo else*/
    
  }/*chiudo primo else*/
  
  return 0;
}/*fine file*/



void shuffle(char array[][MAXLEN], int max)
{
  int i;
  char temp[MAXLEN];
  
  for(i=1; i <= max; i++)
  {
    int j= 1 + ( rand() % max );
    strcpy(temp, array[i]);
    strcpy(array[i], array[j]);
    strcpy(array[j], temp);
  }
}
</nowiki>