#include <stdio.h>
int main() {
// Declaração das variáveis
char bebida;
// Solicita a escolha do usuário
printf("Deseja tomar água (a) ou suco (s)? ");
scanf("%c", &bebida);
// Verifica a escolha do usuário
if (bebida == 'a') {
// Imprime a mensagem
printf("Você matou sua sede!");
} else if (bebida == 's') {
// Imprime a mensagem
printf("Você matou sua sede com suco!");
} else {
// Imprime a mensagem de erro
printf("Opção inválida!");
}
return 0;
}
Porque não posso digitar agua ou suco,apenas a e s nesse programa feito pelo google bard?Alguém pode corrigir para mim? a lógica está certa,mas falta algum detalhe.
#include <stdio.h>
int main() {
// Declaração das variáveis
char bebida[10];
// Solicita a escolha do usuário
printf("Deseja tomar água ou suco? ");
scanf("%s", &bebida);
// Verifica a escolha do usuário
if (strcmp(bebida, "água") == 0) {
// Imprime a mensagem
printf("Você matou sua sede!");
} else if (strcmp(bebida, "suco") == 0) {
// Imprime a mensagem
printf("Você matou sua sede com suco!");
} else {
// Imprime a mensagem de erro
printf("Opção inválida!");
}
return 0;
}
Trocou a categoria de leitura, que foi de 1 caractere (“%c”) para Mais de 1 caractere (“%s”), reservou a capacidade para 10, com isso, sendo uma comparação entre conjunto de caracteres (strings), precisou da função string compare
strcmp
Itera sobre as strings a, b até diferir ou até o fim, o que vier primeiro.
*Essa função é não binária, porque ela reposta com -1,0,1.
Basicamente, o especificador %c indica que deve ler apenas um caractere, enquanto %s indica que deve ler vários (na verdade, uma sequência de caracteres que não sejam espaços/quebras de linha).
Para esse tipo de coisa sempre deve-se consultar a documentação
Por motivos didáticos, antecipo uma expressão para a função strcmp, que quase sempre é também um exercício para iniciantes.
int stcompare(const char *s1, const char *s2) {
// Enquanto igual E não neutra, itera a igualdade de seus elementos
while (*s1 == *s2 && *s1)
++s1,
++s2;
return (*s2-*s1);/* desreferenciar ponteiro e subtrair valores.
Se valor no endereço de s1 > s2, retorna o valor negativo
Se valor no endereço de s2 > s1, retorna o valor positivo
Quando elas são iguais, retorna neutro 0
*/
}