Ir ao conteúdo
  • Cadastre-se
Thinaire

Gravando arquivo txt

Recommended Posts

#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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi,

tudo errado mesmo, vou assistir mais aulas. Obrigada pela dica , a minha intenção é aprender mesmo.....

 

  • Curtir 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×