Jump to content
mew

Ajuda sff, memoria em ficheiro

Recommended Posts

mew

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

Share this post


Link to post
Share on other sites
tiago.f

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

Share this post


Link to post
Share on other sites
mew

Achas que deveria mudar para fprintf em todos?

e já agora sabes o porquê de no run me encravar quando pergunta o mes da viagem?

E como posso fazer uma especie de funçao que me mostre as viagens ja criadas pelos utilizadores?

obrigado!

Share this post


Link to post
Share on other sites
tiago.f

Achas que deveria mudar para fprintf em todos?

é contigo, há varas maneiras de fazer a mm coisa

e já agora sabes o porquê de no run me encravar quando pergunta o mes da viagem?

onde está esse codigo?

Share this post


Link to post
Share on other sites
mew

Parece que já não encrava.

Dá para dar uma ajudinha numa funçao para ver as viagens já criadas?

Share this post


Link to post
Share on other sites
HappyHippyHippo

e que tal, em vez de queres continuares a implementares mais coisas, testas corretamente o que já tens ?

tens a certeza que o código apresentado, mesmo corrigido com os comentários apresentados, fazes tudo direitinho ?


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

Share this post


Link to post
Share on other sites
HappyHippyHippo

grava ? como ?

void cria_viagem()
{
FILE *cria_viagem;
cria_viagem=fopen(viagemdb,
                  "r"); // <--- abertura para leitura


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

Share this post


Link to post
Share on other sites
HappyHippyHippo

depende, se pretendes que o ficheiro limpo no momento da abertura, sim, se pretendes simplesmente adicionar no fim do que já existe, terás de colocar "a"


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

Share this post


Link to post
Share on other sites
HappyHippyHippo

não sei ... apresenta o código que tens agora

ps : usa as tags apropriadas, e se não sabes como, tens a explicação no funda da página na secção de ajuda


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

Share this post


Link to post
Share on other sites
mew
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

Share this post


Link to post
Share on other sites
HappyHippyHippo

ps : usa as tags apropriadas, e se não sabes como, tens a explicação no funda da página na secção de ajuda


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

Share this post


Link to post
Share on other sites
HappyHippyHippo

uma leitura muito rápida do código deu para ver:

- o primeiro if não faz sentido nenhum

- o código do primeiro ramo do switch (case 1) está claramente errado

- o primeiro scanf do segundo ramo (case 2) está errado


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

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.