Ir ao conteúdo
  • Cadastre-se

Gravando arquivo txt


Thinaire

Posts recomendados

#include<stdlib.h>
#include<stdio.h>
int main(){

	int qtd;
	char operador[20],cor[100],tamanho[10];
	float vu=0;

//teste.txt é o arquivo de onde vamos ler o arquivo
	FILE*teste;
 			   teste=fopen("teste.txt","r");
			   	if(teste==NULL){
			printf("não existe");
			getchar();
			exit(0);


	}
	while((fscanf(teste,"%s %s %s %d %f",&operador,&cor,&tamanho,&qtd,&vu)!=EOF)){
	   printf ("\n%s %s %s %d %f\n",operador,cor,tamanho,qtd,vu);
}

 printf("\n\n");
  printf("\n\n");
   printf("\n\n");


int res;
 printf("\ndeseja ler o relatorio?\n");
 printf("\n1-sim\n");
 printf("\n2-nao\n");

	scanf("%d",& res);

 if(res==1){

	   printf ("\n%s\n",operador);
		// if(operador== +)
		 printf(operador);

 }
 else {
 	printf("aperte qualque tecla para finalizar");
 }

 //dados.txt vai ser o segundo arquivo,onde vamos guardar o relatório
		FILE*dados;
		 dados=fopen("dados.txt","w");
			if(dados==NULL){
				printf("não existe");
				getchar();
				exit(0);
			}
				while((fscanf(dados,"%c",&operador,&qtd,&vu)!=EOF)){
	   									fprintf (dados,"\n%s\n",operador);

	   									if(teste,"%s",operador=='+'){

											fprintf(dados,"\n%c\n",0);
										   }

										   if(teste,"%s",operador=='-'){

											fprintf(dados,"\n%c\n",0);
										   }
											if(teste,"%s",operador=='/'){

											fprintf(dados,"\n%s\n",0);
										   }
											if(teste,"%s",operador==\\){

											fprintf(dados,"\n%s\n",0);
										   }
											if(teste,"%s",operador=='*'){

											fprintf(dados,"\n%d %f\n",qtd*vu);
										   }
											if(teste,"%s",operador=='!'){

											fprintf(dados,"\n%s\n",final do arquivo);
										   }


 }


	fclose(teste);
	fclose(dados);
	getchar();
	return 0;
}

boa noite,

preciso criar um códico em "c" que grave de um arquivo.txt as informações em outro arquivo. 

Operadores e suas funções:

+ : O sinal de mais indica que foi realizado um cadastro de produto.

- : O sinal de menos indica que ocorreu uma compra de produto.

/ : O sinal da divisão serve para indicar a apresentação de todos os produtos cadastrados em ordem de chegada.

: O sinal da contra barra serve para indicar a apresentação de todos os produtos vendidos em ordem de chegada.

* : O asterisco apresenta o valor total de ganho das vendas.

! : A exclamação serve para indicar fim do arquivo.

Cada operação realizada deve imprimir no arquivo o valor 0 – (zero)(no arquivo de saída), o que indicada que a operação foi realizada com sucesso.

 

não tenho muita experiencia em programação,alguém tem dica de como funcionar este código?

 

obrigada...

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Abaixo você esta abrindo um arquivo para editar, existindo ou não, ele sera substituido, então...

 dados=fopen("dados.txt","w");

Não ha necessidade de usar fscanf, pois ele serve para ler as linha de um arquivo, sendo que acabamos de criar o arquivo.

while((fscanf(dados,"%c",&operador,&qtd,&vu)!=EOF)){

Apenas use fprintf e para criar uma nova linha use \n dentro do fprintf!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

BOA NOITE E OBRIGADA POR RESPONDER,

ARRUMEI O CÓDIGO E AGORA FICA DANDO ERRO NA STRUCT, o que ACHA QUE PODE SER? E A PARTE DA COMPARAÇÃO DO IF ESTÁ CORRETO? FICO AGRADECIDA PELA AJUDA.

#include<stdlib.h>
#include<stdio.h>
#include <string.h>
int main(){
	struct{

 int qtd;
	char operador[20];
	char cor[100];
	char tamanho[10];
	float vu;
}registro;


struct registro[100];
	FILE*teste;
 teste=fopen("teste.txt","r");
	if(teste==NULL){
		printf("não existe");
		getchar();
		exit(0);
	}
		
			FILE*dados;
 dados=fopen("dados.txt","w");
	if(teste==NULL){
		printf("não existe");
		getchar();
		exit(0);

	}




int res;
 printf("\ndeseja ler o relatorio?\n");
 printf("\n1-sim\n");
 printf("\n2-nao\n");

	scanf("%d",& res);

 if(res==1){

	  teste=fopen("dados.txt","w");
	  
	  

 }
 else {
 	printf("aperte qualque tecla para finalizar");
 }
 int i;

for(i=0,i<100,i++){

 fgets(dados,"%s %s %s %d %f",&registro[i].operador,&registro[i].cor,&registro[i].tamanho[i],&registro[i].qtd[i],&registro[i].vu)!=EOF))
	  fputsf ("\n%s %s %s %d %f\n",registro.operador,registro.cor,registro.tamanho,registro.qtd,registro.vu);

if(operador[1]=='+'){
 fputsf(dados,"\n%c\n",0]);
}
if(teste,"%c",operador=='-'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='/'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='\\'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='*'){
 fputsf(dados,"\n%c\n",qtd*vu);
}
if(teste,"%c",operador=='!'){
 fputsf(dados,"\n%c\n",final do arquivo);
}


	fclose(teste);
	flose(dados);
	getchar();
	return 0;


}
}

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@geovane.soahres Percebi muitos erros, inclusive alguns bem básicos. Lhe recomendo dar uma estudada nas aulas desse link, mais especificamente as aulas que eu numerei abaixo: https://programacaodescomplicada.wordpress.com/indice/linguagem-c/

 

35~37 - Structs
73 - fputs
74 - fgets
77 - fprintf
78 - fscanf

 

Não dá pra te ajudar se você não aprender os conceitos acima, se eu tentar te ajudar sem antes você aprender essas coisas, no mínimo vou acabar fazendo tudo por você.

Bons estudos.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Quando você estiver com problema em uma função sempre busque sua documentação, pois sempre sera a resposta correta, ela facilita muito o entendimento e sempre tem exemplos, aconselho a pesquisar nesse site sobre as funções, e quem sabe você aprenda mais do que sabia(pelo menos eu aprendi :D), segue o link: http://www.cplusplus.com/reference/ (no canto esquerdo você pode escolher as bibliotecas e la encontrará as suas funções, ou você pode pesquisar  )

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 11 meses depois...
Em 2016-6-12 às 23:59, Thinaire disse:

BOA NOITE E OBRIGADA POR RESPONDER,

ARRUMEI O CÓDIGO E AGORA FICA DANDO ERRO NA STRUCT, o que ACHA QUE PODE SER? E A PARTE DA COMPARAÇÃO DO IF ESTÁ CORRETO? FICO AGRADECIDA PELA AJUDA.


#include<stdlib.h>
#include<stdio.h>
#include <string.h>
int main(){
	struct{

 int qtd;
	char operador[20];
	char cor[100];
	char tamanho[10];
	float vu;
}registro;


struct registro[100];
	FILE*teste;
 teste=fopen("teste.txt","r");
	if(teste==NULL){
		printf("não existe");
		getchar();
		exit(0);
	}
		
			FILE*dados;
 dados=fopen("dados.txt","w");
	if(teste==NULL){
		printf("não existe");
		getchar();
		exit(0);

	}




int res;
 printf("\ndeseja ler o relatorio?\n");
 printf("\n1-sim\n");
 printf("\n2-nao\n");

	scanf("%d",& res);

 if(res==1){

	  teste=fopen("dados.txt","w");
	  
	  

 }
 else {
 	printf("aperte qualque tecla para finalizar");
 }
 int i;

for(i=0,i<100,i++){

 fgets(dados,"%s %s %s %d %f",&registro[i].operador,&registro[i].cor,&registro[i].tamanho[i],&registro[i].qtd[i],&registro[i].vu)!=EOF))
	  fputsf ("\n%s %s %s %d %f\n",registro.operador,registro.cor,registro.tamanho,registro.qtd,registro.vu);

if(operador[1]=='+'){
 fputsf(dados,"\n%c\n",0]);
}
if(teste,"%c",operador=='-'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='/'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='\\'){
 fputsf(dados,"\n%c\n",0);
}
if(teste,"%c",operador=='*'){
 fputsf(dados,"\n%c\n",qtd*vu);
}
if(teste,"%c",operador=='!'){
 fputsf(dados,"\n%c\n",final do arquivo);
}


	fclose(teste);
	flose(dados);
	getchar();
	return 0;


}
}

 

 

Olá Thinaire, você conseguiu resolver esse exercicio?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!