Chr15
-
Posts
3 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Chr15
-
-
Bom dia, @De Los Santos!
printf("\nQual o novo valor para Inteiro? ", Inteiro); printf("\nQual o novo valor para Decimal? ", Decimal); printf("\nQual o novo valor para Caractere? ", Caractere); printf("\nQual o novo valor para Booleano? ", Booleano);
Obrigado pelo feedback. Corrigi o detalhe das variáveis no printf citado. Realmente não fazia sentido, erro de iniciante.
scanf(" %c", &Caractere);
Quanto a esse scanf, em um momento anterior tive um problema ao tentar obter o input para essa função funcionar, o código não funcionava, saltando para a linha seguinte sem perguntar qual o novo valor para essa variável.
Vi num vídeo que o scanf em variáveis char precisavam deste espaço antes do %c para funcionar, senão ela é ignorada. Coloquei e funcionou por alguns testes. Mas após inserir o Booleano no código tive esse problema que não consegui resolver ainda...
Aguardo novas orientações,
Chris
- 2
-
Bom dia, Clube! Tudo bem com vocês?
Já começo pedindo desculpas caso meu tópico esteja duplicado ou por faltar algum detalhe inicialmente... Sou novo nesse mundo e tô aqui pra aprender.
Utilizando o gancho da aprendizagem, agradeceria grandemente se alguém pudesse me responder esses problemas que esbarrei no primeiro dia de codificação C :
- O retorno da função printf da variável float nomeada Decimal tem o valor menor do que o definido manualmente pelo scanf;
- O retorno da função printf da variável char nomeada Caractere após o scanf neste código fica vazio por algum motivo.
Aqui o código:
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> //Incluindo bibliotecas pre-definidas void main(){ int Inteiro; float Decimal; char Caractere; bool Booleano; //Definindo variáveis e seus tipos Inteiro = 4; Decimal = 1.5; Caractere = 'C'; Booleano = false; //Definindo valores das variáveis printf("\nO valor da variavel Inteiro atualmente = %d!", Inteiro); printf("\nQual o novo valor para Inteiro? ", Inteiro); //Imprimindo na tela scanf("%d", &Inteiro); //Pedindo usuário para inserir novo valor printf("\nO valor da variavel Decimal atualmente = %f!", Decimal); printf("\nQual o novo valor para Decimal? ", Decimal); //Imprimindo na tela scanf("%f", &Decimal); //Pedindo usuário para inserir novo valor printf("\nO valor da variavel Caractere atualmente = %c!", Caractere); printf("\nQual o novo valor para Caractere? ", Caractere); //Imprimindo na tela scanf(" %c", &Caractere); //Pedindo usuário para inserir novo valor printf("\nO valor da variavel Booleano atualmente = %d!", Booleano); printf("\nQual o novo valor para Booleano? ", Booleano); //Imprimindo na tela scanf("%d", &Booleano); //Pedindo usuário para inserir novo valor printf("\nO novo valor de A = %d", Inteiro); printf("\nO novo valor de B = %f", Decimal); printf("\nO novo valor de C = %c", Caractere); printf("\nO novo valor de D = %d\n\n", Booleano); //Imprimindo valores após a modificação system("pause"); //Pausando após execução }
Sei que é um código simples e a ideia é essa mesmo! Comecei literalmente ontem e estou testando os tipos de variáveis.
Só que aí encontrei esses detalhes que não consegui encontrar a falha...
Aguardo respostas e sou grato antecipadamente pelo tempo e disposição de vocês.Abraços,
Chris
- 1
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
Por que o retorno da função printf não retornam os valores do scanf?
em C/C#/C++
Postado
Boa noite,@Lucca Rodrigues!
Primeiramente muito obrigado pela resposta.
No vídeo que vi, não foi dito o motivo, só que funcionava quando fosse colocado esse espaço...
Mas agora eu sei o porquê e vários outros saberão também quando encontrarem esse tópico quando surgir alguma dúvida relacionada. Obrigado!
E sim, eu fui informado que bool em C é quase inútil, mas começando agora preciso testar e saber os reais motivos para tal.
Acabo de descobrir!
Obrigado mais uma vez pela disposição, @Lucca Rodrigues!
------------------------------------------------------------------------------------------------
Boa noite,@mauro_b!
Antes de mais nada: obrigado pelos esclarecimentos! Confesso que fiquei 2 minutos refletindo o que você tinha dito mas agora entendo o que significa (ou pelo menos acho que entendo).
Se eu declaro que o scanf precisa de um inteiro ("%d" e peço desculpas se eu te corrigir errado mas creio que o mesmo tem 2 bytes) e bool tem somente 1 byte, ele sobrescreve a variável char para que se torne inteiro (2 bytes) e isso altera a característica da variável, tornando o printf nulo pois não condiz com seus parâmetros.
É isso, não? Por favor, me corrija se eu estiver errado.
Detalhe: a variável float agora funciona normalmente, só precisei removê-las do printf em que perguntava quais seriam os novos valores das variáveis. Antes mesmo de remover a bool.
Te agradeço grandemente pela disposição em repassar os conhecimentos adquiridos com tanta paciência e boa vontade!
Um ótimo início de semana para vocês!
Aguardo mais informações.
Chris