Ir ao conteúdo
  • Cadastre-se

C Repetição da última linha do printf


Ezequiel André

Posts recomendados

Boa noite pessoal. Estou engatinhando em um pequeno projeto em C e não estou com o código fonte todo pronto, estou criando em partes. E já na primeira parte, a que deveria mostrar a lista de itens de um arquivo, a última linha fica repetindo. Estou usando o "fscanf"  para ler do arquivo. Se alguém puder me ajudar a resolver, ou me explicar onde estou errando, agradeço. Segue o código fonte, lembrando que as outras funções eu ainda não implantei.Segue também imagem das telas de execução, só para pré-visualização

 

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<windows.h>
void gotoxy(int x, int y){
  COORD coord;
  coord.X = x;
  coord.Y = y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
typedef struct{
	int cod;
	char nome[15];
	float quant;
	float valor;
	float v_total;
	float v_venda;
	float lucro;
}Dados;
int head(){
	for(int i = 0 ; i < 6 ; i++){
		for(int j = 0 ; j < 50 ; j++){
			if(i==0){
				if(j==0){
					printf("%c",201);
				}
				if(j==49){
					printf("%c\n",187);
				}
				else{
					printf("%c",205);
				}
			}
			if(i==5){
				if(j==0){
					printf("%c",200);
				}
				if(j==49){
					printf("%c\n",188);
				}
				else{
					printf("%c",205);
				}
			}
						
		}if(i>1&&i<5){
				printf("%c%50c\n",186,186);
			}
	}
	gotoxy(2,2);
	printf("\tSISTEMA DE GERENCIAMENTO DE ESTOQUE\n\n\n");
	
}
int body(){
	for(int i = 0 ; i < 17 ; i++){
		for(int j = 0 ; j < 50 ; j++){
			if(i==0){
				if(j==0){
					printf("%c",201);
				}
				if(j==49){
					printf("%c\n",187);
				}
				else{
					printf("%c",205);
				}
			}
			if(i==16){
				if(j==0){
					printf("%c",200);
				}
				if(j==49){
					printf("%c\n",188);
				}
				else{
					printf("%c",205);
				}
			}
						
		}if(i>1&&i<16){
				printf("%c%50c\n",186,186);
			}
	}
}
int menu(int *op){
	head();
	body();
	gotoxy(2,6);
	printf("Digite a opcao desejada:");
	int j=1;
	printf("\n\n");
	
	for(int i = 9 ; i < 16 ; i++){
		
		if(i==9){
			gotoxy(2,i);
			printf("%d- Mostrar relatorio do estoque",j);
			j++;
		}
		if(i==10){
			gotoxy(2,i);
			printf("%d- Salvar relatorio do estoque",j);
			j++;
		}
		if(i==11){
			gotoxy(2,i);
			printf("%d- Inserir item no estoque",j);
			j++;
		}
		if(i==12){
			gotoxy(2,i);
			printf("%d- Localizar item no estoque",j);
			j++;
		}
		if(i==13){
			gotoxy(2,i);
			printf("%d- Excluir item do estoque",j);
			j++;
		}
		if(i==14){
			gotoxy(2,i);
			printf("%d- Ajuda",j);
			j++;
		}
		if(i==15){
			gotoxy(2,i);
			printf("%d- Sair",j);
			j++;
		}	
	}
	gotoxy(27,6);
	scanf("%d",&*op);
	system("cls");
	//return *op;
}
int main(){
	Dados dados;
	FILE *txt;
	int opcao;
	
	do{
		menu(&opcao);
		system("cls");
		switch(opcao){
			case 1:{
				head();
				body();
				
				if((txt=fopen("estoque.txt","r"))==NULL){
					printf("Não foi possivel aabrir o arquivo");
				}
				else{
					int i=8;
					gotoxy(1,7);
					printf("COD  NOME     QUANT VALOR VALOR_V VALOR_T  LUCRO");
					while(!feof(txt)){
						fscanf(txt," %d %s %f %f %f %f %f",&dados.cod,&dados.nome,&dados.quant,&dados.valor,&dados.v_venda,&dados.v_total,&dados.lucro);
						++i;
						gotoxy(2,i);
						printf("%d  %s\t%.2f%5.2f%6.2f%9.2f%8.2f",dados.cod,dados.nome,dados.quant,dados.valor,dados.v_venda,dados.v_total,dados.lucro);
					}
				}
					fclose(txt);
					gotoxy(2,6);
					printf("Para sair digite 7:");
					gotoxy(22,6);
					scanf("%d",&opcao);
				
			}
			case 2:{
				printf("tchau");
				break;
			}
		}
	}while(opcao!=7);
	
	gotoxy(1,20);
	return 0;
}

 

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

Funcionou perfeitamente. Eu já havia tentado antes colocar o fscanf dentro do whille , mas da seguinte forma:

"while((fscanf(txt,"%d %s%f............., &dados.cod,&.......)!=NULL), mas também não funcionou. 

Agora está tudo certo, Muito obrigado e espero que este post ajude a quem estiver com esta duvida também, por que pesquisei em vários lugares e não achei uma explicação tão boa. 

Muito obrigado

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!