Luís Paiva 0 Posted April 29, 2019 Report Share Posted April 29, 2019 (edited) 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 April 29, 2019 by Luís Paiva Link to post Share on other sites
thoga31 577 Posted May 1, 2019 Report Share Posted May 1, 2019 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? 1 Report Knowledge is free! Link to post Share on other sites
Luís Paiva 0 Posted May 11, 2019 Author Report Share Posted May 11, 2019 @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? Link to post Share on other sites
PsySc0rpi0n 18 Posted May 12, 2019 Report Share Posted May 12, 2019 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 Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now