Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Pedro1998

C Dificuldade em armazenar em arquivos o meu cadastro

Recommended Posts

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <windows.h>

typedef struct {
int codigo;
char tipo [50];
float area;
int Ncomodos ;
char padrão[50];
float sugerido;
float negociado;
}imobiliaria;
imobiliaria ImoBit[50];
void cadastro();
void pesquisa();
void lista();
void listatipo();
void listapadrao();
void alterar();
void excluir();
FILE* abertura(char l,char caminho[50])
{
    FILE*fp;
    if(l=='g')
    {
        fp=fopen(caminho,"wb+");
    }
    else if(l=='l')
    {
        fp=fopen(caminho,"rb+");
    }
    else
        fp=fopen(caminho,"ab+");
    return fp;
}


int main(void)
{   int op;
    setlocale(LC_ALL,"portuguese");
    enum DOS_COLORS
    {
        BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN,
        LIGHT_GRAY, DARK_GRAY, LIGHT_BLUE, LIGHT_GREEN, LIGHT_CYAN,
        LIGHT_RED, LIGHT_MAGENTA, YELLOW, WHITE
    };

    textcolor(BLACK);
    textbackground(WHITE);
    FILE*fp;
    fp=abertura('l',"imobiliaria.txt");
    if(fp == NULL)
    {
        printf("Erro, nao foi possivel abrir o arquivo\n");
        fp=abertura('g',"imobiliaria.txt");
    }
    do{
        system("cls");
       printf("\n-------Bem Vindo a ImoBit-------\n\nDesenvolvido por:\n Amanda de Souza\n João Eduardo\n João Gustavo\n Pedro Augusto\n\n1 - CADASTRAR\n2 - PESQUISAR\n3 - LISTAR\n4 - LISTAR POR TIPO\n5 - LISPAR POR PADRÃO\n6 - ALTERAR\n7 - EXCLUIR\nDigite uma opção:") ;
       scanf("%d", &op);
        switch(op){
            case 1:
            cadastro();

            break;
        case 2:
            pesquisa();
            break;
        case 3:
            lista();
            break;
        case 4:
            listatipo();
            break;
        case 5:
            listapadrao();
            break;
        case 6:
            alterar();
            break;
        case 7:
            excluir();
            break;
        default:
            printf("\nOpção Inválida");
            break;
        }
        getchar();
            getchar();
    }while(op != 0);
}
void cadastro()
{   system("cls");
    int codigo[50],i,op,fp;
    char tipo [50][50];
    float area[50];
    int Ncomodos [50];
    char padrão[50][50];
    float sugerido[50];
    float negociado[50];
    setlocale(LC_ALL,"portuguese");
    {
        for(i=0;i<50;i++){
        printf("\n Insira o código de identificação do imóvel: ");
        scanf("%d", &codigo);

        printf("\n Informe o tipo de imóvel (Apartamento ou Casa): ");
        scanf("%s", &tipo);

        printf("\n Informe a área construída em M²: ");
        scanf("%f", &area);

        printf("\n Informe a quantidade de cômodos: ");
        scanf("%d", &Ncomodos);

        printf("\n Qual o padrão de acabamento do imóvel (Popular, Bom, Excelente): ");
        scanf("%s", &padrão);

        printf("\n Informe o preço sugerido (em reais) \n R$ ");
        scanf("%f", &sugerido);


        ImoBit.codigo = codigo;
        strcpy(ImoBit.tipo,tipo);
        ImoBit.area = area;
        ImoBit.Ncomodos = Ncomodos;
        strcpy(ImoBit.padrão,padrão);
        ImoBit.sugerido = sugerido;

        fwrite(&ImoBit,sizeof(ImoBit),1,fp);

        printf("\n Se deseja realizar outro cadastro digite 4. \n Para finalizar digite qualquer valor: ");
        scanf("%d", &op);

        if (op!=4){
             break;

        }


           }

    }

    if (op!=4)
    {
        printf("\n Cadastro finalizado!");
    }
}
void pesquisa()

    int op;
    system("cls");
    int pesquisaid,i;
    do
    {
        printf("\nDigite o número de identificação do imóvel:");
        scanf("%d", &pesquisaid);
        for(i=0;i<50;i++)
        {
            if (ImoBit.codigo == pesquisaid)
            {
                printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);

            }

        }
        printf("\nDigite 1 para pesquisar novamente: ");
        scanf("%d", &op);
    }
    while(op==1);

}
void lista(){
    system("cls");
    int i;
    printf("\nLista de Imóveis\n");
    for(i=0;i<50;i++){
        if (ImoBit.codigo>0){
            printf("\n\n----------------------\n");
             printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);
        }

    }


}
void listatipo()
{
    system("cls");
    int i;
    char tip[20];
    printf("\nInforme o tipo desejado:");
    scanf("%s", &tip);
    printf("\nLista dos imóveis do tipo %s\n", tip);
    for(i=0;i<50;i++)
        {
            ImoBit;
        if (strcmp(ImoBit.tipo,tip)==0 && ImoBit.codigo!=0 ){
            printf("\n\n------------------\n");
             printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);
        }
         else if (strcmp(ImoBit.tipo,tip)==0 && ImoBit.codigo==0 ){
            printf("\nVAZIO");
            break;
        }

    }


}
void listapadrao()
{
    system("cls");
    int i;
    char pad[20];
    printf("\nInforme o padrão desejado:");
    scanf("%s", &pad);
    printf("\nLista dos imóveis do tipo %s\n", pad);
    for(i=0;i<50;i++)
        {

            ImoBit;
        if (strcmp(ImoBit.padrão,pad)==0 && ImoBit.codigo!=0){
            printf("\n\n------------------\n");
             printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);
        }

         else if (strcmp(ImoBit.padrão,pad)==0 && ImoBit.codigo==0){
            printf("\nVAZIO");
            break;
        }

    }


}
void alterar (){
    system("cls");
    int cod,i;
    printf("\nInforme o código do cadastro que deseja alterar: ");
    scanf("%d", &cod);
for(i=0;i<50;i++)
       {
        if (ImoBit.codigo == cod)
        {
            printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);

            printf("\n-------------------------\n");
            printf("\n Insira o novo código de identificação do imóvel: ");
            scanf("%d", &ImoBit.codigo);
            fflush(stdin);
            printf("\n Informe o tipo de imóvel (Apartamento ou Casa): ");
            scanf("%s", &ImoBit.tipo);
            fflush(stdin);
            printf("\n Informe a área construída em M²: ");
            scanf("%f", &ImoBit.area);
            fflush(stdin);
            printf("\n Informe a quantidade de cômodos: ");
            scanf("%d", &ImoBit.Ncomodos);
            fflush(stdin);
            printf("\n Qual o padrão de acabamento do imóvel (Popular, Bom, Excelente): ");
            scanf("%s", &ImoBit.padrão);
            fflush(stdin);
            printf("\n Informe o preço sugerido (em reais) \n R$ ");
            scanf("%f", &ImoBit.sugerido);
            fflush(stdin);
        }
        }

}
void excluir(){
    system("cls");
    int cod,i,op;
    ImoBit ;
    printf("\nDigite o código do cadastro que deseja excluir: ");
    scanf("%d", &cod);
    for(i=0;i<50;i++)
        {
    if (ImoBit.codigo==cod){
    printf("\nCódigo: %d\nTipo: %s\nÁrea: %.2f\nCômodos: %d\nPadrão: %s\nPreço Sugerido: R$%.2f\n",ImoBit.codigo,ImoBit.tipo,ImoBit.area,ImoBit.Ncomodos,ImoBit.padrão,ImoBit.sugerido);
    }
    printf("\n---------------\n");
    printf("\nDeseja excluir? (1 - Sim | 2 - Não): ");
    scanf("%d", &op);
        if (op == 1){
            ImoBit.codigo = 0;
            break;

        }
        else{
            break;
            }
        }
        system("cls");
        printf("\nCADASTRO EXCLUÍDO COM SUCESSO");
    }

void textbackground (int iColor)

{
    HANDLE hl = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO bufferInfo;
    BOOL b = GetConsoleScreenBufferInfo(hl, &bufferInfo);
    bufferInfo.wAttributes &= 0x000F;
    SetConsoleTextAttribute (hl, bufferInfo.wAttributes |= (iColor << 4));

}
void textcolor (int iColor)
{
    HANDLE hl = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO bufferInfo;
    BOOL b = GetConsoleScreenBufferInfo(hl, &bufferInfo);
    bufferInfo.wAttributes &= 0x00F0;
    SetConsoleTextAttribute (hl, bufferInfo.wAttributes |= iColor);
}
 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Pedro1998       para postar seu código é melhor usar o botão   <>  que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como os   [ i ]  que sumiram do seu código ,  seu código está bom ,  apenas tem alguns comandos desnecessários e essa forma de abrir os arquivos que você usou  é bem complicada , é melhor usar da forma direta e bem mais simples ,  e essa função de alterar  é bem difícil e não consegui fazer , então tente fazê-la e poste para que eu possa ter uma ideia de como fazer da próxima vez ,  então seu código com algumas modificações pode ser assim  :

#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,   /* nome das cores */
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLUE*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}

typedef struct alunos {
    int   codigo      ;
    char  tipo[50]    ;
    float area        ;
    int   Ncomodos    ;
    char  padron[50]  ;
    float sugerido    ;
    float negociado   ;
}imobiliaria          ;
imobiliaria ImoBit[50];
int main(){
    char op,resp='s',tip[30],pad[30];
    int x=0,pesquisaid,cod;/* precisa inicializar */
    FILE *arquivo,*arquivo2;
    setlocale(LC_ALL,"");
    do{
        op='0';
        textcolor(9,15);
        system("cls");
        printf("0 - FINALIZAR O PROGRAMA =\n");
        printf("1 - CADASTRAR ============\n");
        printf("2 - LISTAR ===============\n");
        printf("3 - PESQUISAR ============\n");
        printf("4 - LISTAR POR TIPOS =====\n");
        printf("5 - LISTAR POR PADRÃO ====\n");
        printf("6 - ALTERAR ==============\n");
        printf("7 - EXCLUIR ==============\n");
        fflush(stdin);
        op=getche();
        printf("\n");
        switch(op){
        case '0':
            printf("\n\nVocê Digitou Zero , Saindo ");
            for(x=0;x<10;x++){
                printf(". ");
                Sleep(400);
            }
            printf("!\n\n");
            break;
        case '1':/* cadastrar */
            arquivo=fopen("imobiliaria.txt", "ab");
            resp='s';
            x=0;
            while(resp!='n'){
                if(x<50){
                    system("cls");
                    printf("\n Insira o código de identificação do imóvel: "    );
                    scanf("%d", &ImoBit[x].codigo                               );
                    printf("\n Informe o tipo de imóvel (Apartamento ou Casa): ");
                    scanf("%s", ImoBit[x].tipo                                  );
                    printf("\n Informe a área construída em M²: "               );
                    scanf("%f", &ImoBit[x].area                                 );
                    printf("\n Informe a quantidade de cômodos: "               );
                    scanf("%d", &ImoBit[x].Ncomodos                             );
                    printf("\n Qual o padrão de acabamento do imóvel (Popular, Bom, Excelente): ");
                    scanf("%s", ImoBit[x].padron                                );
                    printf("\n Informe o preço sugerido (em reais) \n R$ "      );
                    scanf("%f", &ImoBit[x].sugerido                             );
                    fwrite(&ImoBit[x], sizeof(imobiliaria), 1, arquivo          );
                    printf("\ndeseja cadastrar outro aluno ?  S/N "             );
                    resp=getch();
                    if(resp!='n') x++;
                }
            }
            fclose (arquivo);
            break;
        case '2':/* listar */
            system("cls");
            arquivo=fopen("imobiliaria.txt", "rb");
            x=0;
            while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0)   {
                if(ImoBit[x].codigo!=-1){
                    printf("-------------------------------\n"            );
                    printf("Código ---------: %d\n"    ,ImoBit[x].codigo  );
                    printf("Tipo -----------: %s\n"    ,ImoBit[x].tipo    );
                    printf("Area -----------: %.2f\n"  ,ImoBit[x].area    );
                    printf("Cômodos --------: %d\n"    ,ImoBit[x].Ncomodos);
                    printf("Padrão ---------: %s\n"    ,ImoBit[x].padron  );
                    printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido);
                    x++;
                }
            }
            fclose(arquivo);
            printf("\n          Tecle !");
            getch();
            break;
        case '3':/* pesquisar */
            system("cls");
            arquivo=fopen("imobiliaria.txt", "rb");
            x=0;
            printf("\nDigite O Número De Identificação Do Imóvel: ");
            scanf("%d", &pesquisaid);
            while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0)   {
                if(ImoBit[x].codigo == pesquisaid){
                    printf("-------------------------------\n");
                    printf("Código ---------: %d\n"    ,ImoBit[x].codigo  );
                    printf("Tipo -----------: %s\n"    ,ImoBit[x].tipo    );
                    printf("Area -----------: %.2f\n"  ,ImoBit[x].area    );
                    printf("Cômodos --------: %d\n"    ,ImoBit[x].Ncomodos);
                    printf("Padrão ---------: %s\n"    ,ImoBit[x].padron  );
                    printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido);
                    x++;
                }
            }
            fclose(arquivo);
            printf("\n          Tecle !");
            getch();
            break;
        case '4':/* listar por tipo */
            system("cls");
            arquivo=fopen("imobiliaria.txt", "rb");
            x=0;
            printf("\nInforme O Tipo Desejado: ");
            scanf("%s", tip);
            printf("Lista De Im´veis Do Tipo %s\n",tip);
            while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0)   {
                if(strcmp(ImoBit[x].tipo,tip)==0 && ImoBit[x].codigo!=0 ) {
                    printf("-------------------------------\n");
                    printf("Código ---------: %d\n"    ,ImoBit[x].codigo  );
                    printf("Tipo -----------: %s\n"    ,ImoBit[x].tipo    );
                    printf("Area -----------: %.2f\n"  ,ImoBit[x].area    );
                    printf("Cômodos --------: %d\n"    ,ImoBit[x].Ncomodos);
                    printf("Padrão ---------: %s\n"    ,ImoBit[x].padron  );
                    printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido);
                    x++;
                }
            }
            fclose(arquivo);
            printf("\n          Tecle !");
            getch();
            break;
        case '5':/* listar por padrão */
            system("cls");
            arquivo=fopen("imobiliaria.txt", "rb");
            x=0;
            printf("\nInforme O Padrão Desejado: ");
            scanf("%s", pad);
            printf("Lista De Imóveis Do Tipo %s\n",pad);
            while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0){
                if(strcmp(ImoBit[x].padrão,pad)==0 && ImoBit[x].codigo!=0){
                    printf("-------------------------------\n");
                    printf("Código ---------: %d\n"    ,ImoBit[x].codigo  );
                    printf("Tipo -----------: %s\n"    ,ImoBit[x].tipo    );
                    printf("Area -----------: %.2f\n"  ,ImoBit[x].area    );
                    printf("Cômodos --------: %d\n"    ,ImoBit[x].Ncomodos);
                    printf("Padrão ---------: %s\n"    ,ImoBit[x].padron  );
                    printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido);
                    x++;
                }
            }
            fclose(arquivo);
            printf("\n          Tecle !");
            getch();
            break;
        case '6':
            printf("Está No Alterar . . . !        Tecle");
            getche();
            /* esse é bem difícil e não consegui fazer , veja o que consegue .*/
            break;
        case '7':/* excluir */
            x=0;
            arquivo =fopen("imobiliaria.txt", "rb");
            arquivo2=fopen("imobiliaria2.txt","ab");
            printf("digite o id a ser apagado: ");
            fflush(stdin);
            scanf("%d",&cod);
            while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0){
                if(ImoBit[x].codigo != cod){
                    fwrite(&ImoBit[x], sizeof(imobiliaria), 1, arquivo2);
                    x++;
                }
            }
            fclose(arquivo2);
            fclose(arquivo );
            remove("imobiliaria.txt");
            rename("imobiliaria2.txt","imobiliaria.txt");
            printf("\nExclusao Concluida Com Sucesso !\n\n");
            printf("        Tecle !\n\n");
            getch();
            break;
        default:
            printf("\nOpção Inválida");
            Sleep(1000);
            break;
        }
    }while(op!='0');
    textcolor(12,15);/* primeiro cor letra , segundo cor fundo */
    return 0;
}

 

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×