Jump to content

Memória em ficheiro


mew

Recommended Posts

gostava de saber qual o erro que estou a cometer obrigado desde já

estrutura:

typedef struct s_datahora {
   unsigned short dia;
   unsigned short mes;
   unsigned short ano;
   unsigned short hora;
   unsigned short minutos;

} data2;
typedef enum {
   basico = 1, confortavel = 2, luxuoso = 3
} conforto;

typedef struct s_viagem {
   char localpartida[MAX];
   data2 datapartida;
   char localchegada[MAX];
   float duracao;
   float preco;
   int contacto;
   unsigned short lugares;
   conforto conforto;
   users *lista_usersV;
} viagem;

ficheiro:

void cria_viagem()
{
       FILE *cria_viagem;
       cria_viagem=fopen(viagemdb, "r");
       viagem aux_viag;
       int newl='\n';


               printf("\n:Qual o conforto do carro (basico, confortavel ou luxuoso)");
               scanf("%d",&aux_viag.conforto);
               fputs(aux_viag.conforto,cria_viagem);   ........ erro aqui: error: incompatible type for argument 1 of 'fputs'
               fputc(newl,cria_viagem);
               printf("\nQual o preço por utilizador:");
               scanf("%f",&aux_viag.preco);
               fputs(aux_viag.preco,cria_viagem);    ....... erro aqui: error: incompatible type for argument 1 of 'fputs'
               fputc(newl,cria_viagem);            
               fclose(cria_viagem);
               system("Pause");
Edited by thoga31
Tags code + GeSHi
Link to comment
Share on other sites

Olá,

Aqui ficam os meus comentários até alguem com mais conhecimento de C apareça para te dar uma ajuda 🙂

- cria_viagem=fopen(viagemdb, "r"); -> faltam aspas no viagemdb

- fputs(aux_viag.conforto,cria_viagem) -> 1º parametro deve ser const char*, estás a passar um enum

- fputs(aux_viag.preco,cria_viagem) -> 1º parametro deve ser const char*, estás a passar um inteiro

sugeria usares fprintf em vez de fputs e fputc.

Exemplo: em vez de

fputs(aux_viag.preco,cria_viagem); ....... erro aqui: error: incompatible type for argument 1 of 'fputs'
fputc(newl,cria_viagem);

podias usar

fprintf(cria_viagem, "%d\n", aux_viag.preco);

Cumps

Edited by thoga31
GeSHi
Link to comment
Share on other sites

void cria_viagem() {
   FILE *cria_viagem;
   cria_viagem = fopen("viagemdb", "a");
   viagem aux_viag;
   utilizador aux_ut;
   int newl = '\n';
   int n;
   utilizador *i;

   if (cria_viagem == NULL) {
       cria_viagem = fopen("viagemdb", "a");
       fclose(cria_viagem);
   }
   do {

       printf("\n\n  *************** MENU ***************************\n");
       printf("   ***************************************************\n");
       printf("  ***************                      ******** ******\n");
       printf(" ***  1 ->ver users      2 -> criar viagem        ****\n");
       printf(" ***  3 -> juntar a uma viagem  4- ver viagens    ****\n");
       printf(" ***                  5-exit                      ****\n");
       printf(" ***************************************************\n\n");
       printf("Introduza a sua opcao: ");
       printf("\nOpcao:");
       scanf("%d", &n);
       switch (n) {
           case 1:
           {
               for (i = 0; i < 20; i++) {
                   printf("username: %s\n", i->novou);
               }




           }
           case 2:
           {
               cria_viagem = fopen("viagemdb", "a");
               printf("\n Criar viagem\n");
               printf("\n Qual o local de partida:");
               setbuf(stdin, NULL);
               scanf("%s", &aux_viag.localpartida);
               fprintf(cria_viagem, "%s\n", aux_viag.localpartida);
               fputc(newl, cria_viagem);
               printf("\n local de chegada:");
               setbuf(stdin, NULL);
               scanf("%s", aux_viag.localchegada);
               fprintf(cria_viagem, "%s\n", aux_viag.localchegada);
               fputc(newl, cria_viagem);
               printf("\n Qual o mes da partida:");
               setbuf(stdin, NULL);
               scanf("%hu", &aux_viag.datapartida.mes);
               fprintf(cria_viagem, "%hu\n", aux_viag.datapartida.mes);
               fputc(newl, cria_viagem);
               printf("\n local o dia da partida:");
               setbuf(stdin, NULL);
               scanf("%hu", &aux_viag.datapartida.dia);
               fprintf(cria_viagem, "%hu\n", aux_viag.datapartida.dia);
               fputc(newl, cria_viagem);
               printf("\n Qual a hora da partida:");
               setbuf(stdin, NULL);
               scanf("%hu", &aux_viag.datapartida.hora);
               fprintf(cria_viagem, "%hu\n", aux_viag.datapartida.hora);
               fputc(newl, cria_viagem);
               printf("\n:Qual o tempo de  duracao da viagem");
               scanf("%f", &aux_viag.duracao);
               fprintf(cria_viagem, "%f\n", aux_viag.preco);
               fputc(newl, cria_viagem);
               printf("\n:Quantos lugares disponiveis MAX-4");
               scanf("%d", &aux_viag.lugares);
               fprintf(cria_viagem, "%d\n", aux_viag.lugares);
               fputc(newl, cria_viagem);
               printf("\n:Qual o conforto do carro (basico=1, confortavel=2, luxuoso=3)");
               scanf("%d", &aux_viag.conforto);
               fprintf(cria_viagem, "%d\n", aux_viag.preco);
               fputc(newl, cria_viagem);
               printf("\nQual o preço por utilizador:");
               scanf("%f", &aux_viag.preco);
               fprintf(cria_viagem, "%f\n", aux_viag.preco);
               fputc(newl, cria_viagem);
               fclose(cria_viagem);
               system("Pause");
               break;
           }
Edited by thoga31
Tags code + GeSHi
Link to comment
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.