Bazı bilgileri edinmek için bir kod yapıyorum, bir "struct" yapın ve sonra bunları listeleyin.scanf çalışmıyor. Float okumak, tutmak, sonra okumak
İstediğim tüm bilgileri ekleyebilirim, ancak okuduğumda kayan değerler yanlış. Kodda bir hata yaptığımı veya herhangi bir kodu yanlış kullanıp kullanmadığımı göremiyorum.
Tamamlanmadı, yine de birkaç tane daha özellik eklemem gerekiyor ve menümüm iyi çalışmıyor, bu yüzden sorun değil.
Sadece 1 numaralı menüde 1, 2, 1'de ise Dahil Et, 2'si Liste ve 3'ü Hariç Tutmak içindir. İşte
kod bazı kısımları geçerli:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ESTOQUEtamanho 10
struct PRODUTO {
char codigo[20];
char descricao[100];
int quantidade;
float precoCusto;
float precoVenda;
char livre;
};
struct PRODUTO estoque[ESTOQUEtamanho];
void inicializa(){
int i;
for (i=0;i<ESTOQUEtamanho;i++)
estoque[i].livre=1;
}
int insereEstoque (char *c, char *d, int q, float pC, float pV){
int i;
for (i=0;i<ESTOQUEtamanho;i++) {
if (estoque[i].livre) {
strcpy(estoque[i].codigo, c);
strcpy(estoque[i].descricao, d);
estoque[i].quantidade = q;
estoque[i].precoCusto = pC;
estoque[i].precoVenda = pV;
estoque[i].livre=0;
return(1);
}
}
return(0);
}
void listarEstoque(){
int i;
for (i=0;i<ESTOQUEtamanho;i++)
if (!estoque[i].livre)
printf("\n-------------------------\nCodigo: %s\nDescricao: %s\nQuantidade: %d\nPreco de Custo: %d\nPreco de Venda: %d", estoque[i].codigo, estoque[i].descricao, estoque[i].quantidade, estoque[i].precoCusto, estoque[i].precoVenda);
}
int excluirEstoque (char *c){
int i;
for (i=0;i<ESTOQUEtamanho;i++){
if(!estoque[i].livre)
if(!strcmp(c, estoque[i].codigo)){
estoque[i].livre = 1;
return(1);
}
}
return(0);
}
void main(){
int opc1, opcEstoque;
char codigo[20], descricao[100];
int quantidade;
float precoCusto, precoVenda;
inicializa();
while (1) {
printf("\n-------------------------------\nControle de Estoque\n\tOpcoes:\n\t1-Estoque\n\t2-Cliente\n\t3-Vendedor\n\t4-Venda\n\nEntre com sua opcao: ");
opc1=getchar();getchar();
switch (opc1) {
case '1': printf("\n-------------------------------\nEstoque\n\tOpcoes:\n\t1-Incluir\n\t2-Listar\n\t3-Excluir\n\t0-Voltar\n\nEntre com sua opcao:");
opcEstoque=getchar();getchar();
switch (opcEstoque) { printf("\nEntre com o nome: ");
case '1':printf("\nEntre com o codigo: ");
gets(codigo);
printf("\nEntre com a descricao: ");
gets(descricao);
printf("\nEntre com a quantidade: ");
scanf("%d", &quantidade);
printf("\nEntre com o preco de custo: ");
scanf("%f", &precoCusto);
printf("\nEntre com preco de venda: ");
scanf("%f", &precoVenda);
if (insereEstoque (codigo, descricao, quantidade, precoCusto, precoVenda)) printf("\nProduto Incluso");
else printf("\nFalha na inclusao");
break;
case '2': listarEstoque();
break;
case '3': printf("\nEntre com o codigo para excluir: ");
gets(codigo);
if (excluirEstoque (codigo)) printf("\nProduto Excluido");
else printf("\nFalha na exclusao");
break;
default: printf("\nOpção não implementada! ");
break;
}break;
}
}
}`
printf ("\ n ------------------------- \ nCodigo:% s \ nDescri cao:% s \ nQuantidade:% d \ nPreco de Custo:% d \ nPreco de Venda:% d ", estoque [i] .codigo, estoque [i] .descricao, estoque [i] .quantidade, estoque [i] .precoCusto, estoque [i] .precoVenda) '. "Float" için yanlış format belirteci kullanılır. – kaylum
Ve BTW, scanf() 'dan dönüş değerini test etmiyor, her zaman sürprizler için bir reçete. Artı, bu 'ana', 'geçersiz ana' değil C. – Jens
Teşekkür ederim, ama sadece başladım, öğretmen henüz bunun için endişelenmenize gerek olmadığını söylüyor. Ve ana hakkında, ben değişeceğim. – DimplyKhan13