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

Luís Paiva

signos

Recommended Posts

Luís Paiva

Tenho o seguinte código:

char *signo(int dia, int mes) {
 char buffer[25];
 switch (mes) {
 case 1:
 strcpy(buffer, dia < 20 ? "Capricórnio" : "Aquário" );
 break;
 case 7:
 strcpy(buffer, dia < 23 ? "Cancer" : "Leao" );
 break;
 case 8:
 strcpy(buffer, dia < 23 ? "Leao" : "Virgem");
 break;
 case 9:
 strcpy(buffer, dia < 23 ? "Virgem" : "Libra");
 break;
 case 12:
 strcpy(buffer, dia < 22 ? "Sagitário" : "Capricórnio");
 break;
default:
 strcpy(buffer, "desconhecido");
 break;
 }
 return buffer;
}

e tem várias coisas que não entendo. Será que alguém me pode explicar o char buffer? e o ponto de interrogação? e o programa não funciona e é suposto corrigi-la com a função static. Alguém me faz o favor de me explicar tudo isto? Obrigado.

 

Edited by Luís Paiva

Share this post


Link to post
Share on other sites
thoga31

Aparentas ter uma grande falha das bases da linguagem C. Antes de mais, isso requer estudo ;)

Quanto às tuas questões: 1) buffer é uma variável do tipo string (i.e., vector de caracteres), 2) o ponto de interrogação, em conjunto com os dois pontos, constitui o operador ternário, 3) static é uma palavra reservada, não uma função.

Impõem-se as questões para saber o que explicar: Sabes usar strings? Entendes o que faz a função? Sabes trabalhar com a função strcpy?

  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
Luís Paiva

@thoga31 o strcpy e o ponto de interrogação já fazem sentido na minha cabeça. No entanto o static o switch e o default ainda me partem todo. O buffer é apenas o nome da string correto? Eu acho que tinha feito confusão nessa parte porque já tinha ouvido falar de buffers em c mas talvez seja outra coisa não relacionada. Se eu entendi a função, eu acho que conforme o mes introduzido, o switch(mes) leva-me para o mesmo caso do mes, ou seja se o mes é 7 então o ciclo salta logo para o case 7. Depois o default, será que é caso o dia e o mês introduzidos não estejam entre valores válidos. Estou errado? 

Share this post


Link to post
Share on other sites
PsySc0rpi0n

buffer é apenas o nome de uma variável. Podia ser abcd, barco, arvore, whatever...

O switch case é tão simples como:

switch (variavel)

O conteúdo da variavel é comparado com cada um dos cases. Se houver correspondência, o código desse case é executado. O default é apenas para acautelar que o conteúdo da variavel não esteja previsto em nenhum dos cases.

O strcpy() está descrito aqui.


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

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

×

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.