iCl4w 0 Denunciar post Postado Setembro 23, 2009 Olá, Sou iniciante em C e estou com um problema que não consigo resolver. O programa consiste em um cadastro de funcionários, preciso saber o sexo deles e depois exibir em um relatório quantos homens e mulheres foram cadastrados. A minha principal dúvida, de muitas nesse código, é como fazer o programa ler o nome no cadastro? #include <stdio.h> #include <stdlib.h> int conth, contm; void cad_func(void); void ver_relatorio(void); int main(int argc, char *argv[]) { char opcao; system("cls"); printf(" 1 - Cadastro de Funcionario"); printf(" 2 - Ver Relatorio"); printf(" 3 - Sair"); printf("Escolha uma OPCAO: "); opcao=getchar(); switch(opcao) { case '1': cad_func(); break; case '2': ver_relatorio(); break; case '3': exit(0);; break; default: printf("Nenhuma opcao selecionada! "); } system("PAUSE"); return 0; } void cad_func(void) { char nomecompleto[50], sexo; int i, w; printf("Quantos Funcionarios deseja cadastrar? "); scanf("%d",w); for(i=0; i<w; i++) { printf("Digite o NOME do funcionario: "); scanf("%c",&nomecompleto[50]); printf("Digite o SEXO do funcionario: (M/F) "); scanf("%c",&sexo); if (sexo="M") { contah++; printf("O Funcionario %c e do sexo MASCULINO!",&nomecompleto); } else { contm++; printf("A Funcionaria %c e do sexo FEMININO!",&nomecompleto); } } } Nesse caso, o programa pula direto pra pergunta sobre o sexo do funcionário. Sei que irá dar um erro no case 2 por não declarar a função ver_relatorio(); Eu agradeço a ajuda desde já... Abçs... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 23, 2009 Bom primeiro q para ler string tem q ser assim: scanf("%s%*c", variavel); e ele deve estar pulando pq tem sujeira no buffer. de uma limpada com scanf("%*c"); depois do getchar para ver se resolve; []s Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Setembro 23, 2009 Olá, Você esta fazendo a leitura de um jeito errado, você esta usando: printf("Digite o NOME do funcionario: "); scanf("%c",&nomecompleto[50]); Que não faz muito sentido, será melhor você pesquisar um pouco de leitura de string em C. Você tem um vetor de char com 50 posições, logo a variável "nomecompleto" aponta para o onde começa esse vetor, então se você deseja ler uma string você tem que usar: scanf("%s", nomecompleto); Esse codigo lê apenas um tokken, leia sobre gets() em C. Sugiro que você leia http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c240.html Boa sorte! Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Outubro 5, 2009 Nossa Daniloinf Vlw mesmo kra! Não havia me ligado no comando gets(). Abçs... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 5, 2009 Não use gets. Pode causar estouro de buffer. Compartilhar este post Link para o post Compartilhar em outros sites