Vale, muchas cosas:
No compruebas que estás en los bordes del laberinto, que significa que habrías salido. Solo haces una comprobación en el
while(caminfila < 11 && camincol < 11) de que no estás fuera de las dimensiones de la tabla.
Las operaciones de inicio del camino están un poco mal. Tu dices:
iniciocol
= (1+rand()%(11-1));if (iniciocol == 0) {
iniciofila
= (1+rand()%(11-1));} else {
iniciofila = 0;
}
inicioco nunca valdrá 0 puesto que ese 1+... ya hace que el valor sea al menos 1, con lo que nunca se entrará en el else.
De igual forma 1+rand()%(11-1) puede darse el caso de que valga 11 con lo que estarías en la esquina del laberinto, y al poder moverte solamente Sur, Este, Oeste, cualquier movimiento que hicieras te dejaría a la salida del laberinto.
Realmente te sobran variables:
iniciocol, iniciofila, fincol, finfila están de más. Puedes empezar solo con camincol y caminfila e ir actualizándolas.
En 'Creamos el camino' la operación
decidir = rand%4 está mal porqué después en la elección de opciones solo tienes en cuenta los números del 0 al 2, entonces debería ser
decidir = rand%3De igual forma ahí la estructura if - else la puedes sustituir por un switch y aclararás el código, además de usar la estructura correcta para el propósito que buscas.
En 'se asignan paredes' y 'muestra el laberinto' te sales de los límites de la tabla. Deberías moverte desde 0 hasta 10 y te mueves de 0 hasta 11, tanto en horizontal como en vertical.