Jump to content
nita123

Programar em C

Recommended Posts

nita123

Bom dia eu comecei a pouco tempo a estudar C e tem se demonstrado um linguagem desafiante.

tentei criar um programa mas infelizmente não estou a conseguir por a funcionar alguém me pode ajudar?

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

poes mostrar o código que tens assim como deverás explicar qual é o problema 


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
nita123
#include <stdio.h>
#include <conio.h> 
#include <stdlib.h>

typedef struct{
    int codigo;
    char cor;
    char tipo;
    int ativo;
    
}Roupa;

void cabecalho (char*titulo){
    system("cls");
    printf("\n\n--==[%s]==--\n\n", titulo);
}

int main ()
{
    FILE*arq;
    Roupa roup;
    int op, pos;
    char resp ='s';
    arq = fopen("D:\\Temp\\Exemplos\\Roupa.dat", "r+b");
    
    if(arq == NULL)
        printf("\nEr01 - Falha ao abrir arquivo");
    else{
        do{
            cabecalho("Menu Principal");
            printf("\n1 - Inserir");
            printf("\n2 - Atualizar");
            printf("\n3 - Consultar");
            printf("\n4 - Listar");
            printf("\n5 - Eliminar");
            printf("\n6 - Sair");
            printf("\nOpcao escolhida: ");
            scanf("%d", &op);
            getchar();
            
            switch(op){
                case 1:
                cabecalho("Inserir");
                roup.ativo =1;
                printf("\nInserir o codigo da peca pretendida: ");
                scanf("%d", &roup.codigo);
                fflush(stdin);
                printf("\nInsira a cor da peca: ");
                gets(roup.cor);
                printf("\nInsira o tipo da peca: ");
                gets(roup.tipo);
                fwrite(&roup, sizeof(roup), 1, arq);
                
                if(ferror(arq))
                    printf("\nEr02 - Erro na gravacao");
                else
                    printf("\nNova peca inserida no stock");
                break;
                
                
                case 2:
                cabecalho("Atualizar");
                printf("\nDigite o campo a actualizar: ");
                scanf("%d", &pos);
                getchar();
                fseek(arq, sizeof(Roupa)*(pos - 1), SEEK_SET);
                
                if(ferror(arq))
                    printf("\nEr03 - Erro ao selecionar o arquivo");
                else{
                    fread(&roup, sizeof(Roupa), 1, arq);
                    if(ferror(arq))
                        printf("\nEr04 - Erro ao ler o arquivo");
                    else{
                        printf("\nRoupa Codigo: %d", roup.codigo);
                        printf("\nRoupa cor: %s", roup.cor);
                        printf("\nRoupa tipo: %s", roup.tipo);
                        printf("\nRoupa ativo: %d", roup.ativo);
                    }
                }
                printf("\nInsira o codigo da nova peca: ");
                scanf("%d", &roup.codigo);
                getchar();
                printf("\nInsira a cor da nova peca: ");
                gets(roup.cor);
                printf("\nInsira o novo tipo de peca: ");
                gets(roup.tipo);
                fseek(arq, sizeof(Roupa)*(pos - 1), SEEK_SET);
                fwrite(&roup, sizeof(Roupa), 1, arq);
                break;
                
                
                case 3:
                cabecalho("Consultar");
                printf("\nDigite o que deseja Consultar: ");
                scanf("%d", &pos);
                getchar();
                fseek(arq, sizeof(Roupa)*(pos - 1), SEEK_SET);
                if(ferror(arq))
                    printf("\nEr05 - Erro ao posicionar o cursor");
                else{
                    fread(&roup, sizeof(Roupa), 1, arq);
                    if(ferror(arq))
                        printf("\nEr06 - Erro ao ler o registo");
                    else{
                        printf("\nRoupa codigo: %d", roup.codigo);
                        printf("\nRoupa cor: %s", roup.cor);
                        printf("\nRoupa tipo: %s", roup.tipo);
                        printf("\nRoupa ativo: %d", roup.ativo);
                    }
                }
                getchar();
                break;
                
                case 4:
                cabecalho("Listar");
                rewind(arq);
                if(ferror(arq))
                    printf("\nEr07 - Erro ao pusicionar o cursor");
                else{
                    while(!feof(arq)){
                        fread(&roup, sizeof(Roupa), 1, arq);
                        if(ferror(arq))
                            printf("\nEr08 - Erro ao ler o registo");
                        else{
                            if (!feof(arq)){
                                if(roup.ativo){
                                    printf("\nRoupa codigo: %d", roup.codigo);
                                    printf("\nRoupa cor: %s", roup.cor);
                                    printf("\nRoupa tipo: %s", roup.tipo);
                                }
                            }
                        }
                            
                        }
                    }
                    getchar();
                
                
                case 5:
                cabecalho("Eliminar");
                printf("Insira a posição que deseja eliminar: ");
                scanf("%d", &pos);
                getchar();
                fseek(arq, sizeof(Roupa)*(pos - 1), SEEK_SET);
                if(ferror(arq))
                    printf("\nEr09 - Erro ao pusicionar o cursor");
                else{
                    fread(arq, sizeof(Roupa), 1, arq);
                    if(ferror(arq))
                        printf("\nEr010 - Erro ao ler o arquivo");
                    else{
                        printf("\nRoupa codigo: %d", roup.codigo);
                        printf("\nRoupa cor: %s", roup.cor);
                        printf("\nRoupa tipo: %s", roup.tipo);
                        printf("\nRoupa ativo: %d", roup.ativo);
                    }
                    }
                    do{ 
                    printf("Tem a certeza que pertende eliminar? (s/n)");
                    resp = tolower(getchar());
                    }
                    while(resp != 's' &&  resp != 'n');
                    if (resp == 's'){
                        fseek(arq, sizeof(Roupa)*(pos - 1), SEEK_SET);
                        if(ferror(arq))
                            printf("\nEr11 - Erro ao eliminar registo");
                        else
                            printf("\nRegisto eliminado");
                        }
                        else
                            printf("\n\nNão foi possivel eleminar o registo");
                        break;
                    }
            }
            while(op !=6);
        }

        fclose(arq);
        return 0;
    }

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

ok, mas qual é o problema ? se é de execução : apresenta o erro apresentado, se é de compilação, também deverás apresentar o erro apresentado.

caso seja um comportamento estranho, diz o que deveria acontecer e o que actualmente está a acontecer


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

mas que erro ? nota aue eu disse :

2 hours ago, HappyHippyHippo said:

ok, mas qual é o problema ? se é de execução : apresenta o erro apresentado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
nita123

é o proprio programa que mal ponho a correr ele da me uma mensagem de erro que esta no meu codigo 

"não é possivel aceder ao arquivo"

Share this post


Link to post
Share on other sites
HappyHippyHippo

sendo assim, terei de supor que o problema é que o ficheiro não existe, isto porque pelo caminho apresentado, estamos a falar de um sistema operativo windows, e não é "normal" haver problemas de permissões de acesso a ficheiros.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
apocsantos

Boa noite,

O erro que citas-te não se encontra no teu programa! Vá, faz copy-past do erro ao certo! ;)

D:\\Temp\\Exemplos\\Roupa.dat

Confirma que é a unidade D e não a unidade C e se o caminho está totalmente correcto.

Cordiais cumprimentos,
Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.