Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
ldvseba

Problemão em c++. string e inteiro.

Recommended Posts

Pessoal, eu sou iniciante em programação, sei um pouquinho de c++. Estou fazendo um programa meio grandezinho em C++ e me deparei com algo q não é desse planeta:

A determinada altura do programa eu uso um getch() dentro de um loop infinito, o usuário entra um caractere e o programa faz um série de testes de condições com ele. O problema é que estanhosamente uma variável inteira "q não tem nada a ver com a história está sendo alterada".

Para você's entenderem melhor, o que tem no meu programa é +ou- isso:


#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

main()
{
int cerebro, te;
cerebro = 50;
te = cerebro/3;

char str[1];
for(;{

cout <<"cerebro" << te << "/" << cerebro << endl;
str[0] = getch();
str[1] = '\0';

if(strcmp(str,"a")==0) cout<<"ENTROU a!" <<endl;
}

system("pause");
}

Eu uso o Dev-cpp. E Esse erro tá me deixando muuuito irritado. Se você tem o cpp aí, cola o código e compila. A variável "te" ou a "cerebro" vão ser alteradas, e perceba q eu não mexo nela! Eu não faço ideia de onde vem esse problema!:angry:

Ajudem por favor porque isso tá me matando ¬¬'

Grato, Leonardo Da Vinci.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declara assim:

char str[2];

Um segredo pra descobrir esses problemas "estranhos" é você ir comentando cada linha que esteja em volta da linha que está causando o problema até descobrir onde está. No seu caso, o que estava causando o problema era o str[1] = '\0'

Editado por Deadrools

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Cara, muito obrigado. Isso realmente resolveu meu problema. Agora por uma questão de informção, você pode me explicar porque o tamanho da string str[1] estava alterando o valor de uma variável int?

    Muito grato pela ajuda.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Na verdade o que estava alterando a variavel era aquel str[1] = '\0' no final.

    Eu percebi aqui que do jeito que você fez, str[1] ficava com o mesmo endereço de 'cerebro', então quando você modificava str[1] estava modificando cerebro.

    Por que isso acontece, eu nao sei :(

    Editado por Deadrools

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • é q se eu não fecho a string com o '\0' o strcmp, strcpy... dá pau =\. Pelo q li num livrinho aqui, ele só trabalha com strings q sejam finalizadas com o \0. Por isso tive que arrumar um jeito de colocar o '\0' no final da string. ^^

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×