Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida sobre variavel CHAR e PRINTF


Caiolug

Pergunta

Olá gente, esta duvida me trouxe a este ótimo forum e como iniciante estou com uma dúvida basica, o que acontece é o seguinte, declarei uma variavel : char combustivel; depois eu faço o seguinte procedimento: combustivel = 'etanol'; na hora que eu vou usar o printf("O combustivel selecionado foi o %c ", combustivel); em vez de sair o nome etanol sai um numero esquisito, parecido com o numero um, eu consigo fazer com todo tipo de variavel , menos com a char, espero que tenham entendido, como to começando agora fico meio confuso para explicar, o problema resumindo é que não está saindo o "valor" que deveria sair, que no caso é a palavra Etanol.

Muito obrigado.


#include<iostream>
#include<cstdlib>

using namespace std;

int codigo,numero;
float valor,resultado;
char combustivel;

int main(){
    
    printf("Por favor, insira o codigo do combustivel desejado:\n");
    scanf("%d", &codigo);
    if(codigo == 1)
    {
              combustivel = 'etanol';
              printf("O combustivel escolhido foi o %c \n", combustivel);
              system("PAUSE");
              }
              else
              {
    printf("Codigo invalido");  
       system("PAUSE");
}
}

Editado por Caiolug
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Opa, do jeito que está ela irá armazenar apenas uma string. Como você quer armazenar mais de uma string em uma variavel char você precisaria fazer assim:

char combustivel[5];
Ou seja, declara um vetor de char com 5 posições, pois em linguagem C, começa a contar a posição 0(zero). Ficando assim:
combustivel[0] = e
combustivel[1] = t
combustivel[2] = a
combustivel[3] = n
combustivel[4] = o
combustivel[5] = l
Para você atribuir uma "palavra" a um vetor de char, você precisa utilizar a função strcpy.Exemplo:
//coloca o valor ana maria dentro da variavel c
   strcpy(c,"ana maria");
   printf("O valor de c e: %s\n",c);
Eu faria assim, esse seu programa:
#include<iostream>
#include<cstdlib>

using namespace std;

int codigo,numero;
float valor,resultado;
char combustivel[5];

int main(){
    
    printf("Por favor, insira o codigo do combustivel desejado:\n");
    scanf("%d", &codigo);
    
    if(codigo == 1){
              strcpy(combustivel,"etanol");
              printf("O combustivel escolhido foi o %s \n", combustivel);
              system("PAUSE");}
              
    else{
        printf("Codigo invalido");  
        system("PAUSE");}
    
}

Editado por Binder
Link para o comentário
Compartilhar em outros sites

  • 0

Eu faria assim, esse seu programa:

[....]

Este seu código possui alguns erros.

1º: o mais recomendado é que se declare variáveis apenas de escopo local. Apenas use variáveis de escopo global em casos que não é possível utilizar as locais.

2º: Você, ao usar strcpy(), está invadindo algumas posições da memória.

"etanol" possui 6 caracteres, mas é necessário adicionar mais um para ser o caractere terminador nulo, que a função strcpy() adiciona automaticamente.

Portanto, é necessário declarar o vetor de caracteres 'combustivel' com 7 posições, e não 5.

Invadir a memória pode não dar erro algum, mas há casos fatais.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado mJi pela orientação. Quanto a declaração de variáveis fora do escopo do "main", foi uma desatenção minha na hora de desenvolver o código.Deveria ser

declarada dentro, como "variaveis locais".

Sobre a declaração e utilização do vetor de strings, realmente não tinha percebido esse detalhe. Obrigado pela ajuda.

Editado por Binder
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...