gpt4 book ai didi

c - scanf 不工作。需要读取float,保留,然后读取

转载 作者:行者123 更新时间:2023-11-30 17:03:00 25 4
gpt4 key购买 nike

我正在编写代码来获取一些信息,创建一个“结构”,然后列出它们。

我可以添加我想要的所有信息,但是当我读取它们时,浮点值是错误的。我看不出我是否在代码上犯了错误,或者使用了错误的代码。

它还不完整,我还需要添加更多功能,而且我的菜单运行得不太好,所以不要介意。

在菜单 1 中,只有 1 起作用,在菜单 2 上,1 用于包含,2 用于列表,3 用于排除。

以下是部分代码:

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

最佳答案

打印浮点值需要%f,而不是%d

更改:

printf("...Preco de Custo: %d\nPreco de Venda: %d"...);

至:

printf("...Preco de Custo: %f\nPreco de Venda: %f"...);

关于c - scanf 不工作。需要读取float,保留,然后读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com