Olá, olhando o seu código você pode fazer a seguinte alteração antes do (for) de processamento da comparação:
menor = mat [0][0];
for(lin=0; lin<=2; lin++){
for(col=0; col<=2; col++){
if(mat[lin][col] < menor){
menor = mat[lin][col];
pos1=lin;
pos2=col;
}
}
}
assim o menor valor será o primeiro, quando ele começar a fazer a comparação caso haja algum valor menor do que este que foi atribuído a variável menor irá receber este valor.
e aqui vai um código pronto e comentado para você se espelhar caso precise:
#include <stdio.h>
#include <stdlib.h>
#define L 3 //numero de linha
#define C 3 //numero de colunas
#define TAM 1 //tamanho para o vetor que recebe a posicao (pos[TAM][TAM]).
main (){
int A[L][C]; //matriz
int linha, coluna, i, j; //indice para contar linha e coluna
int posL, posC, menor; //'posL' e 'posC' para receber a (linha e coluna) e, 'menor' para receber o valor.
for (linha=0; linha<L; linha++){//faz a leitura da matriz.
for (coluna=0; coluna<C; coluna++){
printf ("A[%d][%d]: ", linha, coluna);
scanf ("%d", &A[linha][coluna]);
}
}
menor=A[0][0]; //recebe o primeiro valor da matriz.
for (linha=0; linha<L; linha++){ //comparacao dos valores para encontrar o menor.
for (coluna=0; coluna<C; coluna++){
if (A[linha][coluna]<menor){
menor = A[linha][coluna]; //menor recebe o menor valor.
posL = linha; //posl recebe a linha em que o valor se encontra.
posC = coluna;// posC recebe a coluna em que o valor se encontra.
}
}
}
printf ("\n"); //pula uma linha.
for (linha=0; linha<L; linha++){ //imprime a matriz
for (coluna=0; coluna<C; coluna++){
printf ("%d ", A[linha][coluna]);
}
printf ("\n");
}
printf ("\n"); //pula uma linha
printf ("Menor valor: %d\n", menor); //imprime o menor valor.
printf ("Posicao: A[%d][%d] \n", posL, posC); //imprime a posicao.
return 0;
}
Espero ter ajudado, abrçs.