Bat como hiciste para que te ande?
Mati:
void barajar(Carta *mazo){
int i, j; // Estas variables las uso para el swap es como cuando ordenas un vector.
Carta buffer; // Este vendria a ser el que contiene el que va a rotar (como cuando ordenas vector)
for(i = 0; i <= 51; i++){ // Aca voy pasando las cartas una por una..
j = rand()%52; // A la primera del maso le busco una nueva posicion a asignar dentro de la baraja.
//swap
buffer = *(mazo+i); //Guardo la primera para no perderla jaja
*(mazo+i) = *(mazo+j); //La carta que esta en la posicion del random que me tiro la guardo en donde esta mi primera carta
*(mazo+j) = *(mazo+i); // Y la que estaba primera la llevo a la que le saque carta..
} //Lo hago con las 52 cartas y queda barajeada la cosa...
}
Ahí te lo comente fijate, funciona como un algoritmo de busqueda pero en vez de buscar la mayor o la menor buscas la de posicion que te tira el random.