Jump to content
PF

Função que mostra opções - Vetores

Recommended Posts

PF

A ideia principal é criar uma função onde se envie um array e seja colocado no ecrã as opções desse array.

Passo a explicar em código:

const char* localidadeTexto[]={"Lisboa", "Porto", "Coimbra"};

Algures no meu código quero pedir a localidade e quero informar o operador das opções possíveis, do género:

Localidade (1=Lisboa, 2=Porto, 3=Coimbra): _

Para isso nada melhor que uma função, onde passo o endereço de memória do vetor:

mostraOpcoes(localidadeTexto);

E depois a função seria assim:

void mostraOpcoes( char * arrayF){
    int i;
    int tamanho=sizeof(arrayF)/sizeof(char);

    printf("(");
    for(i=0;i<tamanho;i++){
        printf("%d=%s;",(i+1),&arrayF[i]);
    }
    printf(")");
}

A função até funciona quase bem, mas retorna uns caracteres assim meio estranhos, será que não estou a usar bem os * e & ?

Obrigado desde já.

Share this post


Link to post
Share on other sites
Localhost

Assim como passas para a tua função o vector de strings sem o operador & também não podes passar para a função printf o operador & senão ela vai interpretar isso como o endereço da primeira posição da string i.

Já agora, antes do ciclo imprime o valor da variável tamanho e posta o seu valor.


here since 2009

Share this post


Link to post
Share on other sites
Triton

Estás a fazer sizeof de um ponteiro, logo vai retornar o tamanho de um ponteiro genérico (normalmente 32 ou 64bits).

A ideia que tiveste é boa, de obter o tamanho do array estático, mas tens de o fazer ao localidadeTexto e passar o tamanho à função.


<3 life

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.