Sobre os dois iguais, é igual o @devair1010 falou, pois ao colocar somente =, o compilador deve entender que você está tentando inserir um valor, e não comparar, então resolveram colocar == para comparar e não haver confusão.
Agora o seu exercício, fiz um aqui também, usando seu código e do @devair1010, espero que ajude em algo.
#include <stdio.h>
#include <ctype.h>
int linhas=10; //variavel global para linhas
int colunas=10; //variavel global para colunas
void iniciar(int matriz[linhas][colunas]){ //funcao para inicilizar todas posições com 0
for(int i=0; i<linhas; i++){
for(int j=0; j<colunas; j++){
matriz[i][j]=0;
}
}
}
int verificar(int matriz[linhas][colunas], int x, int y){
int aux = 0;
for(int i=0; i<linhas; i++)
for(int j=0; j<colunas; j++)
if(matriz[i][j]==0){ //compara se há algum lugar == 0, que é um lugar livre
aux=1; //insere 1 na variavel aux, e ja da um break para sair do laço
break;
}
if(aux==0){
/* se aux ficar 0, é porque nao achou nenhum lugar livre no teste acima,
então finaliza a função retornando 0 */
printf("\n\nInfelizmente as vagas se esgotaram :( !\n\n");
return 0;
}
if(aux == 1 && matriz[x][y]==1){
//se estiver espaço livre, mas o escolhido for ocupado, vamos procurar um livre
while(matriz[x][y]==1){ //enquanto o lugar escolhido for ocupado, repita.
printf("\nLugar Nao Disponivel, escolha outro: ");
scanf("%d,%d", &x, &y);
}
}
//caso nao estiver ocupado e tiver espaço ele nem passará pelos if's, virá aqui de cara
//no caso de entrar no if de ocupado, ao sair do laço, tb sairá do if e virá aqui
matriz[x][y]=1;
printf("\nLugar [%d][%d] escolhido com sucesso!\n", x, y);
return 1;
}
int main(){
int lugares [linhas][colunas], i, j, k;
char op;
iniciar(lugares);
do{
printf("\nEscolha um lugar, fileira e coluna respectivamente: ");
scanf("%d,%d", &i, &j);
k=verificar(lugares, i, j);
printf("\nDeseja continuar?[S/N]: ");
scanf(" %c", &op);
}while(toupper(op)!='N' && k!=0);
return 0;
}