Tienes dos errores importantes en tu ultimo codigo:
- Primero, la notacion fil * i + j no accede al array como 2D, esto sobreescribe en cada iteracion del bucle externo lo asignado previamente, puedes comprobar esto imprimiendo el array a parte, lo que buscas es i * col + j.
- Segundo, solo reservas espacio para siente enteros no para diez, afortunadamento solo logras asignar siente enteros al array debido al error mencionado, caso contrario estarias desbordando el array.