Ir para conteúdo
Fórum Script Brasil
  • 0

Meu While Só Faz 3x E Sai


mestre fyoda

Pergunta

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 */

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 */

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...