• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ptrci

Ajuda: converter string para char

3 mensagens neste tópico

Ola a todos,

Estou a tentar converter string para char  já experimentei usar código dos post aqui do fórum mas devo estar a fazer alguma coisa mal, ou o visual studio 2005 não gosta de mim.  :P

Estou a fazer um menu usando o switch, mas queria que o programa aceita-se tudo o que introduzia para não bloquear/estourar quando um utilizador carregar enter=Nullo ou letras e números.

O código que estou a criar é este:

{
    int min = 0 ,max = 0, tabuada = 0, length = 1, p =1;
    char *s[100], *a;


    while (p != 0)
        {
        // Menu
        menu();
        gets(s);
         strcpy(a,s, length);

            switch (*a)
            {
                case '1' :

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Precisas de um crash course em chars, strings, arrays e apontadores.

Não é o que vou tentar fazer aqui... :D

Em C não existe o conceito de "string". O mais que nos conseguimos aproximar disso é com um array de caracteres. Um array de caracteres é declarado escrevendo por exemplo

char s[100];

código com o qual será declarado um array com espaço para 99 caracteres + 1 caracter terminador.

Podes aceder a qualquer caracter do array fazendo s[indice], em que indice pode ir de 0 ao número máximo de caracteres menos um. Ou seja, no exemplo anterior indice pode ser um inteiro entre 0 e 98. Se fizeres:

- s[0] vais aceder ao 1º caracter da string;

- s[98] vais aceder ao último caracter;

- s[99] vais aceder ao caracter terminador;

- se tentares aceder a um índice maior que 99 ou menor que 0 vais estar a aceder a espaço que não foi declarado para o array, o que trará inevitavelmente problemas.

Passando para o teu código, com char *s[100] estás a declarar um array de apontadores para char, que não é o que queres. Depois tentas copiar uma string para um apontador que não tem espaço alocado, que também não é algo que queres fazer. Finalmente, no switch apenas tens que colocar s[0]. Provavelmente vais deparar-te com mais problemas no código, mas vês disso quando acontecer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, funciona. ( é tão fácil já não fazia programas em c há  muito tempo ).

Agora só falta definir que apenas aceite apenas com 1 carácter + 1 carácter terminador.

Vou tentar fazer com o lenght ou com if.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora