Ir para conteúdo
Fórum Script Brasil
  • 0

Algo Para C


ClaudioX

Pergunta

Ola pessoal...

quem puder me ajudar, valeu mesmo!!!!!!!!

Algo:

fread(&aux1, sizeof(malas),1,arq1); //ERRO o que é cada cada campo??

if(aux1.carro ==carro){

if (portão==aux1.desem){

cout<<"status OK";

}

if (aux1.desem==0);

cout<<"reenviada";

else {

leia (arq2.aux1); //ERRO em o C?

cout<<"Erro encontrado e sendo reportado \n ";

cout<<"local incorreto ";

else{

Grave (arq2,aux1); //erro em C??

cout<<"Erro encontrado e sendo reportado

}

Quero escrever o fread e o fwrite de modo que:

malas aux1;

cliente aux2;

FILE *arq1; //registro malas

FILE *arq2; //registro clientes

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

cara......eu não sei o tipo de variáveis que você usa.......se você puder.......posta o código inteiro ou me passa por email........

vamos lá.......

fread(void*, size_t, size_t, FILE*)

- o primeiro parametro é o endereço da variavel onde fread irá copiar os dados retirados do arquivo.............preste atenção pois terá que ser do mesmo tipo e tamanho que você especificará no próximo parametro...........

- o segundo é o tamanho em bytes que você deseja ler dentro do arquivo.......

- o terceiro especifica quantas vezes ele vai fazer essa leitura......

- o quarto indica qual arquivo que você deseja fazer a leitura........

provavelmente você tenha uma struct chamada "malas"

e sua variavel "aux" deve ser do tipo struct malas

dentro da sua struct "carro" e "portão" não podem ser strings.........

fwrite(const void*, size_t, size_t, FILE*)

- o primeiro parametro é o endereço da variavel onde fwrite irá copiar os dados retirados da variavel para o arquivo...........

- o segundo é o tamanho em bytes que você deseja escrever dentro do arquivo.......

- o terceiro especifica quantas vezes ele vai fazer essa escrita......

- o quarto indica qual arquivo que você deseja fazer a escrita........

Obs.: O arquivo deve ser aberto em binário..........pois você está trabalhando com numero de bytes............

te+

Link para o comentário
Compartilhar em outros sites

  • 0

ow ve se você acha o erro no switch

void main()

{

clrscr();

cout<<"=========SISTEMA DE CONTROLE E CADASTRO DE MALAS=========";

menu();

cout<<"\n\nBEM VINDO AO SISTEMA\nDigite 0 para continuar: ";

cin>>x;

while(x==0)

{

switch (op){ //erro case

case 1: serv1();

break;

case 2: serv2();

break;

case3: cliente();

break;

case4: altera();

break;

case5: consultaA();

break;

case6: cout<<"digite 0 para continuar ou qualquer tecla para sair:";

break;

}

cout<<"0- Continuar: ";

cin>>x;

}

}

void menu()

{

cout<<"\n\n____________________________________________________";

cout<<"\n 1. serv 1";

cout<<"\n 2. serv 2";

cout<<"\n 3. Modulo cliente";

cout<<"\n 4. Consulta";

cout<<"\n 5. altera";

cout<<"\n 6: Sair";

cout<<"\n ___________________________________________________: ";

}

void serv1()

{

char x[6];

clrscr();

cout<<"=========SISTEMA DE CONTROLE E CADASTRO DE MALAS=========";

cout<<"\n\n=====Modulo Serv1=====";

arq1=fopen("arq1.txt","at+");

rewind(arq1);

cout<<"\n0- Cadastrar \n 1- Sair: ";

cin>>op;

while (op==0) { //o n0 fecha o cadastramento

clrscr();

cout<<"=========SISTEMA =========";

cout<<"\n\n=====Modulo de Entrada 1=====";

cout<<"\nEntre com o numero de Embarque:\n";

gets(aux1.demb);

cout<<"\nEntre com o numero de Desembarque:\n";

gets(aux1.desem);

cout<<"\nEntre com o numero do carrinho:\n";

gets(aux1.carro);

cout<<"\nEntre com o RG do passageiro:\n";

gets(aux1.RG); //aux1.cod = aux1.RG&&aux1.desem; saco o que quero fazer né?!... como é???

//strcpy(x,aux1.RG);

strcpy(aux1.cod, aux1.RG);

strcat(aux1.cod, aux1.desem);

clrscr();

cout<<"=========SISTEMA =========";

cout<<"\n\n=====Modulo de Entrada 1=====\nRG";

cout<<aux1.RG;

cout<<"\ncod ";cout<<aux1.cod;

fwrite(&aux1,sizeof(aux1),1,arq1);

fclose(arq1);

cout<<"\n0- Cadastrar\n 1- Sair: ";

cin>>op;

}

fclose(arq1);

}

Link para o comentário
Compartilhar em outros sites

  • 0

cara....tem uns errinhos no seu código......

primeiro entre o while e o switch

você deve fazer uma leitura para a variavel op......

outra.....quando você trabalha com numero de byte em arquivo....que é o caso das funções fwrite......fread........fseek...........entre outras você precisa fazer a abertura do arquivo em binário........

sugestão:

delete seu arquivo.......e comece do zero............

o segundo parametro da função fopen indica como você vai abrir seu arquivo....

para abrir em binário você usa "rb+"........se você quiser depois eu te explico cada detalhe..........porem se o arquivo não existir ele retorna NULL e não abre o arquivo.......se você quiser abrir um arquivo para leitura e escrita sem que ele exista você pode usar o parametro "wb+".........

ultima coisa.......no parametro 2 da função fwrite você deve usar sizeof(struct "nome dela")...............

beleza.........

Link para o comentário
Compartilhar em outros sites

  • 0

beleza amigo, o menu ta abrindo q é uma beleza.

O problema é q preciso dele pra ontem.... literalmente... laugh.gif

Se tu puder me falar como resolver o:

cout<<"\nEntre com o RG do passageiro:\n";

gets(aux1.RG); //aux1.cod = aux1.RG&&aux1.desem;

strcpy(aux1.cod, aux1.RG); //jogar a 2º na 1º sem perder a 2º...

strcat(aux1.cod, aux1.desem);//e adicionar a 1º o valor da outra 2º mantendo a segunda

já seria legal... a abertura em binário eu to testando aqui.

De qualquer forma, Obrigado mesmo!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Outra dica: usem a tag CODE deste fórum.

Fica muito mais legível e organizado, além de preservar a identação original.

Eis o código identado corretamente:

	void main() {
  clrscr();
  cout<<"=========SISTEMA DE CONTROLE E CADASTRO DE MALAS=========";
  menu();
  cout<<"\n\nBEM VINDO AO SISTEMA\nDigite 0 para continuar: ";
  cin>>x;
  while(x==0)
  {
  	switch (op){ //erro case
    case 1: serv1();break;
    case 2: serv2();break;
    case3: cliente();break;
    case4: altera();break;
    case5: consultaA();break;
    case6: cout<<"digite 0 para continuar ou qualquer tecla para sair:";break;
  	}
  	cout<<"0- Continuar: ";
  	cin>>x;
  	
  }
	}
	void menu()
	{
  cout<<"\n\n____________________________________________________";
  cout<<"\n 1. serv 1";
  cout<<"\n 2. serv 2";
  cout<<"\n 3. Modulo cliente";
  cout<<"\n 4. Consulta";
  cout<<"\n 5. altera";
  cout<<"\n 6: Sair";
  cout<<"\n ___________________________________________________: ";
  
	}
void serv1()
	{
  char x[6];
  clrscr();
  cout<<"=========SISTEMA DE CONTROLE E CADASTRO DE MALAS=========";
  cout<<"\n\n=====Modulo Serv1=====";
  arq1=fopen("arq1.txt","at+");
  rewind(arq1);
  cout<<"\n0- Cadastrar \n 1- Sair: ";
  cin>>op;
  while (op==0) { //o n0 fecha o cadastramento
  	clrscr();
  	cout<<"=========SISTEMA =========";
  	cout<<"\n\n=====Modulo de Entrada 1=====";
  	cout<<"\nEntre com o numero de Embarque:\n";
  	gets(aux1.demb);
  	cout<<"\nEntre com o numero de Desembarque:\n";
  	gets(aux1.desem);
  	cout<<"\nEntre com o numero do carrinho:\n";
  	gets(aux1.carro);
  	cout<<"\nEntre com o RG do passageiro:\n";
  	gets(aux1.RG); //aux1.cod = aux1.RG&&aux1.desem; saco o que quero fazer né?!...
  	// como é???
  	//strcpy(x,aux1.RG);
  	strcpy(aux1.cod, aux1.RG);
  	strcat(aux1.cod, aux1.desem);
  	clrscr();
  	cout<<"=========SISTEMA =========";
  	cout<<"\n\n=====Modulo de Entrada 1=====\nRG";
  	cout<<aux1.RG;
  	cout<<"\ncod ";cout<<aux1.cod;
  	fwrite(&aux1,sizeof(aux1),1,arq1);
  	fclose(arq1);
  	cout<<"\n0- Cadastrar\n 1- Sair: ";
  	cin>>op;
  }
  fclose(arq1);
	}

ps.: Já ia esquecendo que não modero essa seção e tentando editar o codigo original. laugh.gif

[]'s

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado a todos pelas dicas!!! wink.gif

Acho q até segunda o prog todo tah rodando...

Foi mal não ter logado para responder, por isso repito agora a ultima pergunta;

como utilizar o strcpy e strcat. no prog fico o Rg+desem+RG denovo...(eu queria RG+desem)

e+, se for cadastrar outra pessoa ele mantem (mistura) com a primeira. blink.gif

Se codigo abaixo tiver correto, deve ser o parametros do fread q estao errados,

e conforme ensinou kandrade, vou usar wb+.

lembrando que, um char precisa d quantos bytes?? biggrin.gif

cout<<"\nEntre com o RG do passageiro:\n";
gets(aux1.RG); //aux1.cod = aux1.RG&&aux1.desem; 
strcpy(aux1.cod, aux1.RG); //jogar a 2º na 1º sem perder a 2º...
strcat(aux1.cod, aux1.desem);//e adicionar a 1º o valor da outra 2º mantendo a segunda

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...