mestre fyoda Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 eu to executando while e quando digito as 3x s no repetir ele sai . o meu codigo não deixa repetir enquanto o repetir != 'n' , porque ?int Inserir(){ char nome[100],login[100],sql[100],repetir; sql[0] = '\0'; // Zerando a string nome[0] = '\0'; login[0] = '\0'; while( repetir != 'n' ) { clrscr(); printf(" \n\n \t\t\t Formulario de Cadastro \n"); printf(" \n\n\n\n \t\t\t Nome : "); gets(nome); printf(" \n\n\n\n \t\t\t Login : "); gets(login); MYSQL conexao; mysql_init(&conexao); if ( mysql_real_connect(&conexao, "localhost", "root", "profjanio1", "cadastro", 0, NULL, 0) ) { strcat(sql, "INSERT INTO cadastros(nome,login) values('"); strcat(sql, nome); strcat(sql, "', '"); strcat(sql, login); strcat(sql, "');"); mysql_query(&conexao, sql); printf(" \n\n\n\n \t\t\t Dados inseridos com sucesso! "); mysql_close(&conexao); } else { printf(" \n\n\n\n \t\t\t Falha de conexao "); printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao)); } printf(" \n\n\n\n \t\t Deseja cadastrar mais dados ? (s/n) : "); repetir = getch(); }//fecha while}// fecha função Inserir() /* Fim da função que Insere dados cadastrais */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 Qual é o valor inicial de repetir?Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 20, 2006 Autor Denunciar Share Postado Maio 20, 2006 eu não setei o valor inicial .mas eu coloquei agorarepetir = 's';e não deu certo , está na mesma . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 Bom, na verdade ele pode estar saindo por outro motivo que não o caso do "repetir". Erros em tempo de execução são um caos em C, porque não dão mensagens. A conexão do MySQL não deveria ser feita apenas uma vez? Experimente tirá-la de dentro do loop e só fechá-la após o mesmo.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 20, 2006 Autor Denunciar Share Postado Maio 20, 2006 eu fiz assim e deu na mesma :int Inserir(){ char nome[100],login[100],sql[100],repetir; sql[0] = '\0'; // Zerando a string nome[0] = '\0'; login[0] = '\0'; MYSQL conexao; mysql_init(&conexao); if ( mysql_real_connect(&conexao, "localhost", "root", "profjanio1", "cadastro", 0, NULL, 0) ) { } else { printf(" \n\n\n\n \t\t\t Falha de conexao "); printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao)); } while( repetir != 'n' ) { clrscr(); printf(" \n\n \t\t\t Formulario de Cadastro \n"); printf(" \n\n\n\n \t\t\t Nome : "); gets(nome); printf(" \n\n\n\n \t\t\t Login : "); gets(login); strcat(sql, "INSERT INTO cadastros(nome,login) values('"); strcat(sql, nome); strcat(sql, "', '"); strcat(sql, login); strcat(sql, "');"); mysql_query(&conexao, sql); printf(" \n\n\n\n \t\t\t Dados inseridos com sucesso! "); printf(" \n\n\n\n \t\t Deseja cadastrar mais dados ? (s/n) : "); repetir = getch(); }//fecha while mysql_close(&conexao);}// fecha função Inserir() /* Fim da função que Insere dados cadastrais */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 Faça um teste simples assim: char repetir = 's'; while (repetir != 'n') { printf("\nRepetir (s/n)? "); repetir = getch(); }Se isso funcionar é porque tem algo errado no seu outro código que está fazendo sair (aliás, pode ser o fato de você não zerar a string sql, concatenando tudo todas as vezes).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 20, 2006 Autor Denunciar Share Postado Maio 20, 2006 deu certo esse codigo .o que você me sugere faser ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 deu certo esse codigo .o que você me sugere faser ?Você viu o comentário que fiz sobre a string sql? Experimente escrevê-la na tela a cada iteração e veja se ela está só crescendo. Caso positivo, provavelmente é este o problema. Você deveria zerá-la (junto com as outras strings) dentro do loop.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 20, 2006 Autor Denunciar Share Postado Maio 20, 2006 coloquei um printf("%c",nome) embaixo do strcat(sql, nome); e coloquei um printf("%c",login) embaixo do strcat(sql, login);e imprimiu uma caracter estranho na tela . char nome[100],login[100],sql[100],repetir; sql[100] = '\0'; sql[0] = '\0'; // Zerando a string nome[0] = '\0'; login[0] = '\0'; while( repetir != 'n' ) { clrscr(); printf(" \n\n \t\t\t Formulario de Cadastro \n"); printf(" \n\n\n\n \t\t\t Nome : "); gets(nome); printf(" \n\n\n\n \t\t\t Login : "); gets(login); strcat(sql, "INSERT INTO cadastros(nome,login) values('"); strcat(sql, nome); strcat(sql, "', '"); strcat(sql, login); strcat(sql, "');"); mysql_query(&conexao, sql); printf(" \n\n\n\n \t\t\t Dados inseridos com sucesso! "); printf(" \n\n\n\n \t\t Deseja cadastrar mais dados ? (s/n) : "); repetir = getch(); }//fecha while Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 Nome não é um caracter ("%c") e sim um vetor de caracteres ("%s"). E você ainda experimentou zerá-los dentro do loop?Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 20, 2006 Autor Denunciar Share Postado Maio 20, 2006 deu certo . vlw :) as vezes nos distraimos . fui mudar a conexao e acabei dando ctrl+c nessa parte também .vlw .so mais uma perguntinha , mudando um pouco de assunto , tem como eu criar um campo pra quando for digita o cpf . xxx.xxx.xxx-xx tem como ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 20, 2006 Denunciar Share Postado Maio 20, 2006 deu certo . vlw :) as vezes nos distraimos . fui mudar a conexao e acabei dando ctrl+c nessa parte também .vlw .:)so mais uma perguntinha , mudando um pouco de assunto , tem como eu criar um campo pra quando for digita o cpf . xxx.xxx.xxx-xx tem como ?De uma forma prática, não (nisso o Clipper é show de bola!). Mas, como você pode ler tecla por tecla com a função getch() ou getche() você poderia fazer isso "na mão" (ou seja, "pular" os pontos e o hífen). Isso seria bem interessante de se fazer com a CONIO2 (daria pra fazer ficar semelhante a um get com máscara do Clipper).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mestre fyoda
eu to executando while e quando digito as 3x s no repetir ele sai .
o meu codigo não deixa repetir enquanto o repetir != 'n' , porque ?
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.