• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dario1133

ficheiros

10 mensagens neste tópico

considerando que a seguinte função é uma subfunção do main podem-me dizer se esta abertura do ficheiro está bem??

#include <stdio.h>
#include <stdlib.h>

void ficheiro_viatura(int hi,int hf,int mi,int mf,int si,int sf, char matricula[20])
{


FILE *fp;
int hi,hf,mi,mf,si,sf;
char matricula[20];

fp=fopen("viatura.txt","a+");
if(fp==NULL){
	printf("Erro na abertura do ficheiro\n");
	exit(1);
else
	fprintf(fp,"Matricula:%s\n",matricula); 
	fprintf(fp,"Entrada:%d:%d:%d\n",hi,mi,si);
	fprintf(fp,"Saida:%d:%d:%d\n",hf,mf,sf);
	fprintf(fp,"********************\n");
	fclose(fp);
	printf("ficheiro ciado com sucesso\n);
}

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta um bocado confuso,

void ficheiro_viatura(int hi,int hf,int mi,int mf,int si,int sf, char matricula[20])

int hi,hf,mi,mf,si,sf;

Porque estás a repetir as variaveis?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e assim ja posso fazer??

#include <stdio.h>
#include <stdlib.h>


void ficheiro_viatura(int hi,int hf,int mi,int mf,int si,int sf, char matricula[20])
{


FILE *fp;
fp=fopen("viatura.txt","a+");
if(fp==NULL){
	printf("Erro na abertura do ficheiro\n");
	exit(1);
else


	fprintf(fp,"Matricula:%s\n",matricula); 
	fprintf(fp,"Entrada:%d:%d:%d\n",hi,mi,si);
	fprintf(fp,"Saida:%d:%d:%d\n",hf,mf,sf);
	fprintf(fp,"********************\n");
	fclose(fp);
	printf("ficheiro ciado com sucesso\n);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao tenho bem a certeza, tou um bocado confuso com o VB, mas ja experimentas-te o código?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás aí com problemas com o aninhamento dos blocos e com as chavetas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No seguimento do que disse o Rui Carlos, falta-te fechar a chaveta do if. E não precisas do else, já que tens um exit no if.

Atenção ainda a que, do modo que tens o else, só o primeiro fprintf pertence ao bloco de execução do else. Para teres mais que uma instrução dentro do else, precisas de utilizar chavetas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no seguimento da minha resposta, aquelas variaveis declaradas 2 veses, dá erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no seguimento da minha resposta, aquelas variaveis declaradas 2 veses, dá erro?

Sim, é um erro (uma "constraint violation").

  6.9.1  Function definitions

[...]

  [#9] Each parameter has  automatic  storage  duration.  Its

  identifier  is an lvalue, which is in effect declared at the

  head of the compound statement that constitutes the function

  body  (and  therefore  cannot  be redeclared in the function

  body except in  an  enclosed  block).  The  layout  of  the

  storage for parameters is unspecified.

http://www.google.pt/search?q=n869.txt

Edit: o parágrafo acima, com a "constraint", é #9 no ficheiro que eu tenho no meu disco, mas #6 num ficheiro que o Google apresentou. Não sei porquê, nem se é um erro ... e se for um erro não sei qual está errado (ou até se estão os dois errados)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só falta fechar a chaveta asseguir ao exit(1) e tirar o else, nada mais

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora