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;
}