Função retornar nulo - C - Portugal-a-Programar
Função retornar nulo
By BrunoT, April 1, 2010 in C
Mais um trabalho para a faculdade, mais um problema para resolver
Tenho uma função que retorna uma estrutura, e essa função procura num ficheiro por uma determinada estrutura. O que acontece é que se não encontrar a estrutura, não sei o que devo retornar da função. Já pus return NULL ... mas dá erro :s Alguém me pode ajudar ?
Passas para a função uma variável (o endereço).
blah find(int *blahblah) {
// Se for encontrado
*blahblah = 1;
*blahblah = 0;
Adicionando mais opções à do local host:
podes retornar um apontador para estrutura (terás que alocar espaço com o malloc) desse modo já deves poder retornar null ou então retornar uma estrutura com um dos valores instanciado com um elemento que assinala que a estrutura não foi encontrada (ex: struct.id = -1).
Acho que a minha solução é muito mais simples do que andar a alocar memória e a trabalhar com memória dinâmica.
A versão do Localhost não percebi muito bem :s
Mas penso que com o "-1" que o merlin3000 falou, já me desenrasco
Já agora fica o que fiz nesta função:
Ciclista procCiclista (int dors) {
FILE *fCic;
Ciclista a;
fCic = fopen ("ciclistas.txt","r+");
fread (&a,sizeof(Ciclista),1,fCic);
while ( !feof(fCic) && flag == 0 ) {
if ( a.dorsal == dors ) flag = 1;
else fread (&a,sizeof(Ciclista),1,fCic);
fclose (fCic);
if ( flag == 1 ) return a;
Não sei se já trabalhas com ponteiros mas vou tentar explicar o que eu disse.
Tu passas como argumento à tua função que procura pelo que queres o endereço de uma variável (se passar só a variável não vais poder fazer alterações na mesma) e se encontrares o que pretendes essa variável recebe o valor 1 (ou um valor que queiras) noutro caso recebe o valor 0.
Vou criar aqui a função e a chamada à mesma (de uma maneira muito curta) considerando que a estrutura é do tipo Person:
Person find(int *flag) {
// Aqui procura, se encontrar faz:
// Se não encontrar:
find(&flag);
puts("Encontrado\n");
puts("Bah\n");
Sim já trabalhei com apontadores.
Não tinha percebido o teu algoritmo, mas agora ficou mais claro Entretanto se tiver alguma dúvida, passo por cá