0
I can’t use a string inside the struct I created. Without this string, the program gives some warnings but works normally.
PS: I only need help with the string error, as the error message has become extensive.
Follow the code then the error message:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define COCA_COLA_250 3,50
#define COCA_COLA_1000 8,00
#define FANTA_LARANJA_250 3,00
#define FANTA_LARANJA_1000 7,50
#define GUARANA_ANTARTIDA_250 3,50
#define GUARANA_ANTARTIDA_1000 8,00
#define MARACUJA_250 3,50
#define LIMONADA_250 3,00
#define LARANJA_250 3,00
struct refri
{
char pedido_um [] = "Cola Cola";
char pedido_dois [20];
char pedido_tres [20];
int escolha;
int tamanho;
int quantidade_unidade;
} pedido_refrigerante;
int refrigerante (int *preco_total)
{
int refri_pequeno = 250;
int refri_medio = 1;
printf("+===============================REFRIGERANTES==============================+\n");
printf("|---------------------- Escolha o(s) refrigerante(s): ---------------------|\n");
printf("|------- 1 > Coca Cola \t 2 > Guarana Antartida \t 3 > Fanta Laranja ------|\n");
printf("+==========================================================================|\n");
printf("|------------------------------ 0 > Cancelar ------------------------------|\n");
printf("+==========================================================================+\n");
scanf("%d", &pedido_refrigerante.escolha);
switch(pedido_refrigerante.escolha)
{
case 1:
printf("Quantas unidades de %s ? \n", pedido_refrigerante.pedido_um);
scanf("%d", &pedido_refrigerante.quantidade_unidade);
printf("Escolha um tamanho: \n");
printf(" 1 > ml %d \n 2 > l %d \n", refri_pequeno, refri_medio);
scanf("%d", &pedido_refrigerante.tamanho);
if (pedido_refrigerante.tamanho == refri_pequeno)
{
printf("Pedido de %d unidades de %s de %d ml\n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
}else{
printf("Pedido de %d unidades de %s de %d \\l \n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
}
}
return (preco_total);
}
int menu ()
{
int pedido_bebida;
printf("+========================BEBIDAS=======================+\n");
printf("|--------------- Escolha uma categoria: ---------------|\n");
printf("|----------------- 1 > Refrigerantes ------------------|\n");
printf("|---------------------- 2 > Sucos ---------------------|\n");
printf("+======================================================|\n");
printf("|-------------------- 0 > Cancelar --------------------|\n");
printf("+======================================================+\n");
scanf("%d", &pedido_bebida);
switch(pedido_bebida)
{
case 1:
refrigerante(pedido_bebida);
break;
case 2:
break;
case 0:
break;
default:
break;
}
return (pedido_bebida);
}
int main()
{
menu();
return 0;
}
main.c:19:20: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
char pedido_um [] = "Cola Cola";
^
main.c: In function ‘refrigerante’:
main.c:41:45: error: ‘struct refri’ has no member named ‘escolha’
scanf("%d", &pedido_refrigerante.escolha);
^
main.c:43:28: error: ‘struct refri’ has no member named ‘escolha’
switch(pedido_refrigerante.escolha)
^
main.c:46:66: error: ‘struct refri’ has no member named ‘pedido_um’
printf("Quantas unidades de %s ? \n", pedido_refrigerante.pedido_um);
^
main.c:47:41: error: ‘struct refri’ has no member named ‘quantidade_unidade’
scanf("%d", &pedido_refrigerante.quantidade_unidade);
^
main.c:51:41: error: ‘struct refri’ has no member named ‘tamanho’
scanf("%d", &pedido_refrigerante.tamanho);
^
main.c:53:36: error: ‘struct refri’ has no member named ‘tamanho’
if (pedido_refrigerante.tamanho == refri_pequeno)
^
main.c:55:85: error: ‘struct refri’ has no member named ‘quantidade_unidade’
printf("Pedido de %d unidades de %s de %d ml\n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:55:125: error: ‘struct refri’ has no member named ‘pedido_um’
printf("Pedido de %d unidades de %s de %d ml\n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:55:156: error: ‘struct refri’ has no member named ‘tamanho’
printf("Pedido de %d unidades de %s de %d ml\n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:58:87: error: ‘struct refri’ has no member named ‘quantidade_unidade’
printf("Pedido de %d unidades de %s de %d \\l \n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:58:127: error: ‘struct refri’ has no member named ‘pedido_um’
printf("Pedido de %d unidades de %s de %d \\l \n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:58:158: error: ‘struct refri’ has no member named ‘tamanho’
printf("Pedido de %d unidades de %s de %d \\l \n", pedido_refrigerante.quantidade_unidade, pedido_refrigerante.pedido_um, pedido_refrigerante.tamanho);
^
main.c:62:12: warning: return makes integer from pointer without a cast [-Wint-conversion]
return (preco_total);
^
main.c: In function ‘menu’:
main.c:82:22: warning: passing argument 1 of ‘refrigerante’ makes pointer from integer without a cast [-Wint-conversion]
refrigerante(pedido_bebida);
^~~~~~~~~~~~~
main.c:29:5: note: expected ‘int *’ but argument is of type ‘int’
int refrigerante (int *preco_total)
^~~~~~~~~~~~
If what you put in your
define
are numerical values then note that in C "decimal point" is used and not "decimal point". Maybe there was a transcription error but here:char pedido_um [] = "Cola Cola;
missed " by closing the string. You set the functionint refrigerante (int *preco_total) {
like returning an int but doing:return (preco_total);
butpreco_total
is a pointer to int and not an int.– anonimo
I closed the string with quotes but I still can’t
– Stefany Alves
Set a fixed length for the string and use the strcpy function to put a value on this string.
– anonimo
I see
pedido_um
,pedido_dois
andpedido_tres
within yourstruct refri
. That means that inside a soda, we have three orders. I don’t think that makes sense.– Victor Stafusa
Inside the refrigerant structure there are three possible types of refrigerants
– Stefany Alves
Note that there is a difference between "defining a structure" and "declaring variables of the structure type". You can initialize the components of a structure type variable by declaring it. Ex.
struct point
 {
 int x, y;
 };
struct point first_point = { 5, 10 };
.– anonimo
I caught a mistake, but there are many, do not make a whole code full of errors, make a detail, see if it worked, then go to the next one. When everything is wrong the solution is to throw away and start again. Or else get someone to give a ready-made solution that will teach nothing.
– Maniero