Ir ao conteúdo
  • Cadastre-se

operações com strings em c


João Hagemeyer

Posts recomendados

Fiz um codigo para calcular produtos usando codigos de preços para somar o valor total mas esta dando um erro na leitura da string. Se alguem puder ajudar agradeço desde já.

"O algoritmo deve receber o codigo de um produto e a quantidade comprada e calcular o preço total usando a tabela abaixo:"

codigo preço

'abcd' R$5,30

'xypk' R$6,00

'klmp' R$3,20

'qrst' R$2,50

#include<conio.h>

#include<stdio.h>

main(){

int qde;

char itens[4];

float total;

printf("Digite o codigo do produto: ");

gets(itens[4]); fflush(stdin) //ocorre o erro aqui!!!!!

printf("Digite a quantidade: ");

scanf("%d",&qde);

if(itens[4]=="abcd"){

total=qde*5.3;}

if(itens[4]=="xypk"){

total=qde*6;}

if(itens[4]=="klmp"){

total=qde*3.2;}

if(itens[4]=="qrst"){

total=qde*2.5;}

printf("Total da compra R$: %.2f",total);

getch();

}

Link para o comentário
Compartilhar em outros sites

cara eu também já tive problemas assim, mas infelizmente não sei a solução.

O problema é a função gets() e scanf() próximas, deve ter algo a ver com o '\n' da string ou algo assim.

Acho que o scanf pega o enter do gets.

Não sei muita coisa sobre C pois comecei a pouco tempo.

Ele sabe \/

Link para o comentário
Compartilhar em outros sites

1) O array que você especificou, tem 4 posições, mas você precisará de 5, pois a quinta posição armazenará o caracter terminador de string.

2) O outro erro fica na comparação de strings. Em c, não é permitido comparar strings como se faz com números. Para fazer isso, precisará usar a função 'strcmp()'.

Troque todos os 'if' por:


if ( ! strcmp(itens, "abcd") )
{
...
}

Acho que isso já vai fazer o código funcionar.

Link para o comentário
Compartilhar em outros sites

1) O array que você especificou, tem 4 posições, mas você precisará de 5, pois a quinta posição armazenará o caracter terminador de string.

2) O outro erro fica na comparação de strings. Em c, não é permitido comparar strings como se faz com números. Para fazer isso, precisará usar a função 'strcmp()'.

Troque todos os 'if' por:


if ( ! strcmp(itens, "abcd") )
{
...
}

Acho que isso já vai fazer o código funcionar.

Opa, funcionou blzinha, agora é só acertar os if's,

muito Obrigado a todos.

Estou começando lógica agora, mas o que eu puder

ajudar, estou a disposição.

Grande Abraço!!!

valeu

Link para o comentário
Compartilhar em outros sites

Vou postar o codigo funcionando, para quem tiver a mesma duvida!

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

main(){

int qde;
char itens[5];
float total;

printf("Digite o codigo do produto: ");
gets(itens);
printf("Digite a quantidade: ");
scanf("%d",&qde);

if (strcmp(itens,"abcd")==0){
total=qde*5.3;}
if (strcmp(itens,"xypk")==0){
total=qde*6;}
if (strcmp(itens,"klmp")==0){
total=qde*3.2;}
if (strcmp(itens,"qrst")==0){
total=qde*2.5;}

printf("Total da compra R$: %.2f",total);

getch();
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!