Olá,
Eu tenho o seguinte código:
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
/* Algumas variáveis globais */
int opc;
int opc2;
int sexo3;
char buff[256];
char sexo [5];
char nome[150];
int cadastra();
MYSQL conexao;
int main()
{
mysql_init(&conexao);
if(mysql_real_connect(&conexao, "localhost","root",
"root", "agenda", 0, NULL, 0))
{
printf("Conectado com sucesso!\n");
cadastra();
mysql_close(&conexao);
}
else
{
printf("Houve uma falha ao tentar conectar! \n");
printf("Erro: %d %s\n",mysql_errno(&conexao),
mysql_error(&conexao));
}
return (0);
}
int cadastra()
{
printf("\n\n\t\tMenu:\n");
printf("\t\t--------------\n");
printf("\t\t[1] Inserir\n"
"\t\t[2] Buscar\n"
"\t\t[3] Listar\n"
"\t\t[4] Remover\n"
"\t\t[0] Sair\n"
"\t\t\t>> ");
scanf("%d",&opc);
// "limpa" o buff
memset(buff, 0x0, sizeof(buff));
switch(opc)
{
case 0:
getchar();
break;
case 1:
/* Cadastro */
printf("Nome: ");
scanf("%s",&nome);
printf("Sexo: (M/F) ");
scanf("%s",&sexo);
sprintf(buff, "INSERT INTO aprendendo(nome, sexo) values('%s','%s');", nome, sexo);
mysql_query(&conexao,buff);
printf("O contato %s foi cadastrado com sucesso!\n",nome);
break;
case 2:
/* Buscar */
printf("Digite o nome: ");
scanf("%s",&nome);
printf("Resultados para '%s':\n",nome);
sprintf(buff, "SELECT * from aprendendo where nome = '%s';", nome);
mysql_query(&conexao,buff);
break;
case 3:
/* Listar */
printf("Selecione um filtro:\n ");
printf("\t\t[1] Listar tudo\n");
printf("\t\t[2] Filtrar por sexo\n");
printf("\t\t\t>> ");
scanf("%d",&opc2);
switch(opc2)
{
case 1:
/* Lista tudo */
printf("\t\tListando tudos cadastros:\n");
printf("\t\t-----------------------\n");
mysql_query(&conexao,"SELECT * from aprendendo;");
break;
case 2:
/* Filtra por sexo */
printf("Selecione um sexo:\n ");
printf("\t\t[1] Masculino (M)\n");
printf("\t\t[2] Feminino (F)");
printf("\n\t\t\t>> ");
scanf("%d",&sexo3);
switch(sexo3)
{
case 1:
mysql_query(&conexao, "SELECT * from aprendendo where sexo = 'M';");
break;
case 2:
mysql_query(&conexao, "SELECT * from aprendendo where sexo = 'F';");
break;
default:
/* Opção inválida */
printf("Opcao invalida! \n");
return EXIT_FAILURE;
}
break;
break;
default:
/* Opção inválida */
printf("Opcao invalida! \n");
return EXIT_FAILURE;
break;
}
break;
case 4:
printf("Digite o nome a ser removido: ");
break;
default:
printf("Opcao invalida! \n");
return EXIT_FAILURE;
break;
}
return (0);
}
Este compila sem problemas, apenas com alguns warnings:
main.c: In function ?cadastra?:
main.c:52: warning: incompatible implicit declaration of built-in function ?memset?
devido a linha:
memset(buff, 0x0, sizeof(buff));
O que acontece é que o conteúdo do case 2 e do 3 não funcionam. Daí, tentei limpar o buffer (buff) com a função memset(), mas mesmo assim não funcionou. Alguém tem idéia do que pode ser ?
Obrigado.