Código
typedef struct { int cocheID; int clienteID; } coche; typedef struct { coche coches[MAX_CARS]; int numcoches; } tabla_taller;
La declaración de la función
Código
es errónea.
void LocalizaCliente(coches taller1, int identificador)
coches es una variable del tabla_taller, no un tipo de dato. Si quisieras pasar a la función el dato coches deberías declarar un puntero a coche o un array. Al pasar un array o un puntero deberás pasarle también las dimensiones de éste porqué ese dato no acompaña a un array.
Debería quedarte así:
Código
void LocalizaClientes(coche *lista, size_t size, int identificador)
Pero dentro de la función veo que quieres hacer uso del tipo de dato tabla_taller y, por otra parte, supongo que quieres que la función regrese el subíndice del coche que pertenece al cliente así que la declaración de la función debe ser:
Código
int LocalizaClientes(tabla_taller taller, int identificador)
Dentro de la función mejor si haces un for (porqué básicamente iteras en una lista) que vaya desde 0 hasta el máximo número de coches. Actualmente lo haces hasta 99 y puede superar las dimensiones del array de coches del taller.
Una solución para hacer toda la función podría ser la siguiente:
Código
int LocalizaCliente(tabla_taller taller, int identificador) { int i; int localizador = -1; /* Retornará -1 si no existe dicho cliente * en el taller. */ for(i = 0; i < taller.numcoches; ++i) if(taller_dado.coches[i].clienteId == identificador) { localizador = i; break; } } return localizador; }
He pasado la estructura por referencia porqué desconozco si habéis estudiado pasar parámetros por referencia a las funciones.