gpt4 book ai didi

c - float 前跳线

转载 作者:行者123 更新时间:2023-11-30 19:09:58 25 4
gpt4 key购买 nike

我的功能有问题

void imprimir_producto(t_producto); 

在 float 之前打印换行符。我认为问题出在函数 t_producto leer_producto(void); 中。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Producto
{
int codigo_producto;
char descripcion[20];
float precio_unitario;

} t_producto;

float aplicar_iva(float precio_base);
void emitir_saludo(void);
void imprimir_producto(t_producto);
t_producto leer_producto(void);

int main()
{

t_producto productos[2];
t_producto producto;
char decision;
int i, cantidad;
float total;

cantidad =0;
total = 0.0;

emitir_saludo();

while(cantidad <2)
{
do
{
printf("\nHay %d productos en el carrito. ¿Quiere pasar otro producto? [s/n]: ",cantidad);
decision = getchar();
while(getchar()==EOF);
}while(decision != 's' && decision != 'S' && decision != 'n' && decision != 'N');

if(decision=='n' || decision == 'N')
{
break;
}

producto = leer_producto();
productos[cantidad++] = producto;
}
puts("\nPRODUCTOS:\n");
for(i=0;i<cantidad;i++)
{
imprimir_producto(productos[i]);
total += productos[i].precio_unitario;
//es lo mismo que total = productos[i].precio_unitario + toal;
}

printf("\nTotal deproductos: %d\n\n",cantidad);
printf("Precio total sin IVA: %.2f\n",total);
printf("Precio total con IVA: %.2f\n",aplicar_iva(total));
printf("\nBuenos dias.\n");


return 0;
}

float aplicar_iva(float precio_base)
{
return precio_base * 1.21;
}

void emitir_saludo(void)
{
printf("\n* * * * * * * * * * * * * * * * * *");
printf("\n* * PROGRAMA SUPERMERCADO * *\n");
printf("* * La calidad es lo primero * *\n");
printf("* * * * * * * * * * * * * * * * * *\n");
}

void imprimir_producto(t_producto t)
{
printf("%d %s %f\n",t.codigo_producto,t.descripcion,t.precio_unitario);
}

t_producto leer_producto(void)
{
t_producto p;
char entrada[80];

printf("\nCodigo producto: ");
fgets(entrada,10,stdin);
if(entrada[strlen(entrada)+1] == 'n')
{
entrada[strlen(entrada)+1] == '\0';
}
p.codigo_producto = (int) strtol(entrada,NULL,10);

printf("Descripcion: ");
fgets(p.descripcion,20,stdin);
if(p.descripcion[strlen(p.descripcion)+1] == 'n')
{
p.descripcion[strlen(p.descripcion)+1] == '\0';
}


printf("Precio: " );
fgets(entrada,10,stdin);
if(entrada[strlen(entrada)+1] == 'n')
{
entrada[strlen(entrada)+1] = '\0';
}
p.precio_unitario = strtof(entrada,NULL);

return p;
}

最佳答案

  1. 您已经两次写入 == 'n' 而不是 == '\n'。 (我认为您试图摆脱尾随的换行符。)

  2. 在相同的两个地方,您错误地在 [strlen()+1] 而非 [strlen()-1] 处查找字符。还要考虑当 strlen() 为零时会发生什么。

关于c - float 前跳线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42171214/

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