Olá, eu tentando criar um cadastro de funcionários usando struct em c, me deparei com o seguinte problema:
Quando tentava ler e logo após imprimir o número do DDD do usuário. O programa ao invés de imprimir o valor da variável DDD imprimia o local da variável...
"Consegui resolver o problema" colocando %s no scanf ao invés de %d (que seria o adequado já que minha variável é de tipo inteiro)...
Porque isso aconteceu???
Segue o código abaixo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct cadastro
{
///DADOS PESSOAIS:
char nome[50],
email[50];
int ddd[10];
int numero_tel[20];
};
int main()
{
setlocale(LC_ALL, "");
struct cadastro funcionario[100];
int cont = 0,
escolha = 1;
do{
printf("-------------------------\n"
"CADASTRO DE FUNCIONÁRIO:\n"
"-------------------------\n"
"(1) FAZER UM NOVO CADASTRO\n"
scanf("%d", &escolha);
fflush(stdin);
system("cls");
switch(escolha)
{
case 1:
for(cont; cont<=100; cont++){
printf("INFORME NOME DO FUNCIONÁRIO: ");
fgets(funcionario[cont].nome, 50, stdin);
funcionario[cont].nome[strlen(funcionario[cont].nome)-1] = '\0';
fflush(stdin);
printf("INFORME E-MAIL DE FUNCIONÁRIO: ");
fgets(funcionario[cont].email, 50, stdin);
funcionario[cont].email[strlen(funcionario[cont].email)] = '\0';
fflush(stdin);
printf("INFORME SEU DDD: ");
scanf("%s", &funcionario[cont].ddd);
fflush(stdin);
break;
}
system("cls");
printf("\tUSUÁRIO: %s\n"
"\tCADASTRADO COM SUCESSO\n"
"\tPRESSIONE ENTER PARA VOLTAR AO MENU", funcionario[cont].nome);
getchar();
system("cls");
break;
}
}while(escolha);
return 0;
}
O programa dessa forma está rodando normalmente... é claro não está completo. alguém poderia me responder e por favor... sem muita complicação, ainda sou iniciante rsrs...