Rubemlrm Posted May 29, 2012 at 07:52 PM Report #459000 Posted May 29, 2012 at 07:52 PM (edited) Boas noites , A minha questão é a seguinte , eu estou a fazer um trabalho para o curso e consiste em desenvolver um software para um stand de carros.só que estou com um problema .Eu quero que apos a introdução de um nome seja impresso no ecrã o nome do cliente , mas no entanto apos eu introduzir um nome ele volta para o menu anterior.Aqui fica a struct que guarda os dados tal como as funções que trabalham com ela.Eu penso que seja um problema na altura de fazer a comparação , mas como não tenho muita experiencia com structs e strings em C não sei o que possa ser typedef struct{ char nome[50]; int num_ident; int nif; char morada[200]; int tel; }CLIENTE; typedef CLIENTE VECTCLI[MAX]; CLIENTE insertCli(void){ CLIENTE info; printf("Insira o nome do cliente:"); scanf("%s", info.nome); printf("Introduza o número do cartao de cidadão/BI:"); scanf("%d", &info.num_ident); printf("Introduza o NIF do cliente"); scanf("%d", &info.nif); printf("Introduza a morado do cliente:"); scanf("%s", info.morada); printf("Introduza o telefone/telemovel do cliente:"); scanf("%d", &info.tel); return(info); } //funcao auxiliar para correr o vector de clientes void listCli(CLIENTE client_info){ printf("Nome do Cliente: %s", client_info.nome); printf("Morada do Cliente: %s", client_info.morada); printf("Nif do cliente: %d", client_info.nif); printf("BI do cliente: %d", client_info.num_ident); printf("Número de telefone do cliente: %d", client_info.tel); } //função que vai pesquisar um cliente pelo nome void showClient(VECTCLI v_clientes, int nclientes , char CliName){ int i, flag; for (i=0;i<nclientes;i++){ fif(v_clientes[i].nome == CliName ){ printf("As informações sobre o cliente são as seguintes:"); listCli(v_clientes[i]); }else{ printf("Nome não encontrado!"); } } } Edited May 29, 2012 at 09:06 PM by pmg LP adicionada ao GeSHi
Solution bsccara Posted May 29, 2012 at 08:43 PM Solution Report #459006 Posted May 29, 2012 at 08:43 PM 1) O typedef está mal declarado, pois queres que o tipo VECTCLI seja um vector de estruturas CLIENTE de tamanho MAX. 2) A tua utilização de inteiros para receber strings com apenas caracteres numéricos é original... mas se o inteiro não tiver pelo menos 32 bits... 3) A função listCli está à espera de receber uma estrutura CLIENTE passada por cópia na pilha do CPU. Não é recomendável, é preferível passar um ponteiro para ela. 4) A função showClient recebe um caracter como último parâmetro e não uma string. 5) A comparação de strings não é feita com o operador == em C; usa a função strcmp. Tenta compilar o código antes de o postares aqui; pelo menos os pontos 1 e 5 seriam detectados durante a compilação.
Rubemlrm Posted May 29, 2012 at 08:52 PM Author Report #459008 Posted May 29, 2012 at 08:52 PM Relativamente ao ponto 1 e 2 por incrivel que parece aquilo sempre compilou bem.Estou a usar o code::blocks como IDE. Relativamente ao ponto 3 poderia explicar melhor isso se fosse possivl?
pmg Posted May 29, 2012 at 09:10 PM Report #459014 Posted May 29, 2012 at 09:10 PM Onde e que chamas a funcao insertCli? E como? O que esta na linha em que a chamas e nas linhas proximas relevantes? What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Rubemlrm Posted May 29, 2012 at 10:40 PM Author Report #459028 Posted May 29, 2012 at 10:40 PM Problema resolvido =) tinha problemas no contador para o ciclo for e como referiram o outro problema estava a passar so um char e logo a comparação não iria funcionar.Obrigado pelas dicas pessoal =)
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