Jump to content
Fórum Script Brasil
  • 0

Duvida sobre variavel CHAR e PRINTF


Caiolug

Question

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");
}
}

Edited by Caiolug
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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");}
    
}

Edited by Binder
Link to comment
Share on other 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 to comment
Share on other 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.

Edited by Binder
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...