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

(Resolvido) String vazia gerando valor aleatório, estranho...


DifusioN

Pergunta

Fala povo, seguinte, é meu primeiro tópico de duvida aki no forum e quero tirar uma duvida ke está me deixando de cabelo em pé! xD

Aki vai o programa:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char frase[51];
    unsigned int vmomento1;
    printf("Digite uma frase de até 50 caracteres:");
    gets(frase);

   // strupr(frase); //dica 175 Livro C/C++ a Bíblia

    for(vmomento1=0; vmomento1<=51; vmomento1++)
    {
        if (frase[vmomento1]>='a' && frase[vmomento1]<='z')   //testa se é minúscula e transforma em Maiúscula
        frase[vmomento1]-=32;


        switch (frase[vmomento1])
        {
            case 'A' : printf("xD\n"); break;
            case 'B' : printf("=D\n"); break;
            case 'C' : printf("2\n"); break;
            case 'D' : printf("3\n"); break;
            case 'E' : printf("4\n"); break;
            case 'F' : printf("5\n"); break;
            case 'G' : printf("6\n"); break;
            case 'H' : printf("7\n"); break;
            case 'I' : printf("8\n"); break;
            case 'J' : printf("9=D\n"); break;
            case 'K' : printf("10=D\n"); break;
            case 'L' : printf("=11D\n"); break;
            case 'M' : printf("=12D\n"); break;
            case 'N' : printf("13=D\n"); break;
            case 'O' : printf("=14D\n"); break;
            case 'P' : printf("=D15\n"); break;
            case 'Q' : printf("=D16\n"); break;
            case 'R' : printf("=D17\n"); break;
            case 'S' : printf("=D18\n"); break;
            case 'T' : printf("=D19\n"); break;
            case 'U' : printf("=D20\n"); break;
            case 'V' : printf("=D21\n"); break;
            case 'W' : printf("=D22\n"); break;
            case 'X' : printf("=D22\n"); break;
            case 'Y' : printf("=D23\n"); break;
            case 'Z' : printf("=D24\n"); break;
            case 32 : printf("espacoooo\n"); break;
            case 49 : printf("111\n"); break;
        }
        printf(" - vmoment: %d, letra: %c . numero: %d\n", vmomento1, frase[vmomento1], frase[vmomento1]); /*teste de resultados das variaveis */
     }
    
  system("PAUSE");
  return 0;
}

Esse programa faz o seguinte, a pessoa digita a frase, e a cada caracter digitado, ele transformar em maiúscula e depois imprimi um valor pré determinado para cada caracter.

Eu utilizei duas maneiras de transformar em maiúsculas os caracteres, e os dois dão problemas diferentes, um é utilizando a função strupr e a outra eu mesmo criei(antes de descobrir a strupr, mas ke funciona do mesmo jeito xD)

Os problemas: Ao utilizar o minha forma sem inicializar a string ele se comporta assim: http://img196.imageshack.us/img196/3359/1eucriei.jpg

Ao utilizar minha forma inicializando a string com ="", fika assim: http://img196.imageshack.us/img196/3079/3eucrieiaspas.jpg

Usando o Strupr, sem inicializar: http://img195.imageshack.us/img195/6959/2strupr.jpg

Usando o Strupr, inicializando com ="": http://img295.imageshack.us/img295/3870/4strupraspas.jpg

Viram? Sem inicializar a string os resulados ficam loucos e geram caracteres sem sentidos de acordo com o cálculo...e assim o programa acaba mostrando algo na tela ke a pessoa não digitou..

Ao inicializar....só o ultimo fika estranho...e acaba mostrando algo na tela..

alguém sabe uma explicação para esse problema da string vazia dar valor aleatório(não devia estar como ''?) e ao zerar elas apenas a ultima ter algum valor?

Abraçoss

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

2 respostass a esta questão

Posts Recomendados

  • 0

valeu pela resposta.

Eu resolvi já o problema.

Sim, realmente era esse o problema do tamanho do vetor, tinha esquecido desse detalhe.

E a questão de aparecerem número aleatórios dentro do vetor....é porque quando se inicializa um vetor, ele apenas sabe ke existe tantos locais para armazenar as variáveis....mas não preenche elas com nada, então se algum programa utilizou o mesmo espaço de memória, pode ocorrer de ficarem 'lixos' no local!

Eu inicializei o vetor como vetor[x]=""; assim cada local do vetor ficou com um espaço em branco!

Só coloke a informação em caso de uma futura pesquisa pelo fórum e alguém estiver com a mesma dúvida.

Abraçoss....

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...