Ir ao conteúdo
  • Cadastre-se

C erro undefined reference to "fwirite"


Liraaah

Posts recomendados

Estou Montado uma struct é está com esse erro, erro undefined reference to "fwirite" alguem poderia me dar uma solução, obrigado desde já!!

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

#define ARQ "Dados.Dat"

#define OP_INSERIR   '1'
#define OP_ALTERAR   '2'
#define OP_APAGAR    '3'
#define OP_LISTAR    '4'
#define OP_PESQUISAR '5'

#define OP_SAIR      '0'

#define OP_PESQ_IDADE '1'
#define OP_PESQ_NOME  '2'

char *MainMenu[]={
    "1. Inserir Registro",
    "2. Alterar Registro",
    "3. Apagar Registro",
    "4. Listar Registro",
    "5. Pesquisar",
    "0. Sair",
    NULL
};

char *PesqMenu[]={
    "1. Pesquisar por Intervalo de Idades",
    "2. Pesquisar por Nome",
    "0. Voltar",
    NULL

};

FILE *fp;

typedef struct
{
    char Nome [30+1];
    int Idade;
    float Salario;
    char Status;
} PESSOA;

void Mensagem (char *msg);

void Ler_Pessoa(PESSOA *p)
{
    printf("Nome   : "); gets(p->Nome);
    printf("Idade   : "); scanf("%d",&p->Idade);
    printf("Salario   : "); scanf("%f",&p->Salario);
    p->Status=' ';
    fflush(stdin);
}

void Mostrar_Pessoa(PESSOA p)
{
    printf("%-30s  %3d  %10.2f\n",p.Nome,p.Idade,p.Salario);
}

void Adicionar_Pessoa (PESSOA p)
{
    fseek(fp, 0L, SEEK_END);
    if (fwrite(&p,sizeof(p),1,fp)!=1)
        Mensagem("Adicionar Pessoa: Falhou a escrita do Registro");
}

void Mensagem(char *msg)
{
    printf(msg);
    getchar();
}

void Inic ()
{
   fp=fopen(ARQ,"r+b");
   if (fp==NULL)
   {
    fp =fopen(ARQ,"w+b");
    if (fp==NULL)
    {
        fprintf(stderr,"ERRO FATAL: Impossivel Criar Arquivo de Dados\n");
        exit(1);
    }
   }
}

char Menu(char *opções[])
{ int i;
  char ch;

  while (1)
  {
   printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
   for (i=0; opções!=NULL; i++)
        printf("\t\t%s\n\n",opções);

        printf("\n\n\t\topção: ");
        ch = getchar(); fflush(stdin);
        for (i=0; opções!=NULL; i++)
            if (opções[0]==ch)
            return ch;
  }

}

void Inserir_Pessoa()
{ PESSOA x;
  Ler_Pessoa(&x);
  Adicionar_Pessoa(x);

}

void Alterar_pessoa()
{PESSOA x;
 long int n_reg;
 printf("qual o N° do registro: ");
 scanf("%ld", & n_reg); fflush(stdin);
 if (fseek(fp,(n_reg-1)*sizeof(PESSOA),SEEK_SET)!=0)
 {
     Mensagem("Registro Inexistente ou Problemas no Posicionamento!!!");
     return;
 }
 if (fread(&x,sizeof(PESSOA),1,fp)!=1)
{
    Mensagem("Problema na Leitura do Registro!!!");
    return;
}
if (x.Status=='*')
{
    Mensagem("Um Registro Apagado não pode ser alterado!!!\n\n");
    return;
}

printf("\n\nDados Atuais\n\n");
Mostrar_Pessoa(x);
printf("\n\nNovos Dados\n\n");
Ler_Pessoa(&x);

fseek(fp,-(long)sizeof(PESSOA),SEEK_CUR);
fwirite(&x,sizeof(PESSOA),1,fp);
fflush(fp);
}

void Apagar_Pessoa()
{PESSOA x;
 long int n_reg;
 char resp;

 printf("Qual o N° do Registro: ");
 scanf("%ld", & n_reg);fflush(stdin);
 if (fseek(fp,(n_reg-1)*sizeof(PESSOA),SEEK_SET)!=0)
 {
     Mensagem("Registro Inexistente ou Problema no posicionamento!!!");
     return;
 }
 if (fread(&x,sizeof(PESSOA),1,fp)!=1)
 {
     Mensagem("Problemas na Leitura do Registro!!!");
     return;
 }

 if (x.Status=='*')
 {
     Mensagem("Registro já está Apagado!!!\n\n");
     return;
 }
 printf("\n\nDados Atuais\n\n");
 Mostrar_Pessoa(x);
 printf("\n\nApagar o Registro (s/n)???: "); resp = getchar();
 fflush(stdin);
 if (toupper(resp)!='s') return;

 x.Status='*';
 fseek(fp,-(long) sizeof(PESSOA),SEEK_CUR);

 fwrite(&x,sizeof(PESSOA),1,fp);
 fflush(fp);
}

void Listar()
{ long int N_Linhas =0;
 PESSOA reg;
 rewind(fp);
 while(1)
 {
     if (fread(&reg,sizeof(reg),1,fp)!=1) break;
     if (reg.Status=='*') continue ;
     Mostrar_Pessoa(reg);
     N_Linhas++;
     if (N_Linhas%20==0)
        Mensagem("PRESSIONE <ENTER> para continuar . . . ");
 }
    Mensagem("\n\nPRESSIONE <ENTER> para continuar . . . ");

}

void Pesquisar_Idades(int ini, int fim)
{PESSOA reg;
rewind(fp);

while (fread(&reg,sizeof(PESSOA),1,fp))
    if (reg.Status!='*' && reg.Idade>=ini && reg.Idade<=fim)
    Mostrar_Pessoa(reg);

    Mensagem("\n\nPRESSIONE <ENTER> para continuar . . . ");

}

void Pesquisar_Nome(char *s)
{ PESSOA reg;
  rewind(fp);

  while (fread(&reg,sizeof(PESSOA),1,fp))
    if (reg.Status!='*' && strstr(reg.Nome,s))
    Mostrar_Pessoa(reg);

  Mensagem("\n\nPRESSIONE <ENTER> para continuar . . . ");

}

main()
{
    char Opcao;
    Inic();
    while ((Opcao =Menu(MainMenu))!=OP_SAIR)
      switch (Opcao)
    { case OP_INSERIR: Inserir_Pessoa(); break;
      case OP_ALTERAR: Alterar_pessoa(); break;
      case OP_APAGAR:  Apagar_Pessoa();  break;
      case OP_LISTAR:  Listar(); break;
      case OP_PESQUISAR:
        while ((Opcao=Menu(PesqMenu))!=OP_SAIR)
            switch (Opcao)
        {
        case OP_PESQ_IDADE:
            { int n1,n2;
              printf("Qual o intervalo de Idades: ");
              scanf("%d%d",&n1,&n2); fflush(stdin);
              Pesquisar_Idades(n1,n2);
                    break;

            }
        case OP_PESQ_NOME:
            { char string[BUFSIZ+1];
              printf("Qual o Nome a Procurar: ");
              gets(string);fflush(stdin);
              Pesquisar_Nome(string);

            }
        }

    }
}


 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!