Recorre solamente la primera fila, no entiendo por que sale del ciclo, debería recorrer 12 filas (del elemento 0 al 11 del arreglo), la matriz se paso inicializada en cero (el numero no deberia estar y deberia recorrer toda la matriz).
reg.cantEl es 3072
reg.cantFIl es 12
reg.cantCol es 256
Edito: Me acabo de dar cuenta, me pasa por usar mucho el for :xD
Si algún mod lo ve pueden eliminarlo si quieren, ya esta solucionado...
/* Busca un entero en una matriz de enteros cargando en los parámetros
actuales la posición tanto de columna como de fila del elemento que
contiene el entero. */
void BusqNumArr(TData reg, int* NFil, int* NCol, int num)
{
int i = 0, j , cont = 0;
while((i<reg.cantFil) && (reg.a[i][j] != num) && (cont < reg.cantEl))
{
j = 0; //Faltaba esta linea...
while((j<reg.cantCol) && (reg.a[i][j] != num) && (cont < reg.cantEl))
{
printf("\n%d\n", i);
j++;
cont++;
printf("\n%d\n", cont);
}
i++;
}
if(reg.a[i][j] == num)
{
*NFil = i;
*NCol = j;
}
else
{
*NFil = -1;
*NCol = -1;
}
}