Mitico! Ho provato a scopiazzare quello che avevo scritto per l'array,e per non segnare solo la diagonale principale: ho integrato un for in un altro come solitamente si fa con le matrici,solo che gli ho dato come termine di ciclo !file.eof()
A questo punto ho incrementato gli indici fino alla fine del file e mi stampa tutto!
Senza dover mettere un valore iniziale per il riempimento che alterava la matrice nel file!

codice:
else{
       for( r = 0; !file.eof(); r++ )
       {
            for( c = 0; !file.eof(); c++ )
            {
                    file>> m[ r ][ c ];
            }
       }
}
Ora il problema è la stampa,in pratica non mi stampa la matrice per righe e colonne ma tutti i numeri in fila,come se non vedesse la struttura della matrice:

codice:
for( i = 0; i < r; i++ )
     {
          for( j = 0; j < c; j++ )
          {
               cout<< m[ i ][ j ] << " ";
          }
          cout<<"\n";
     }
     file.close();

}
E' come se ignorasse il comando cout<<"\n";
alla fine di ogni riga,non capisco perchè non lo veda.