Hello, I'm trying to make a customer registry in C using struct
and I came across the following problem:
When you read the user's DDD with scanf it did not write, not even print the value, just the location of the variable
I was able to resolve by saving that value with:
scanf("%s",&funcionario[cont].ddd);
"Okay, my problem solved", but my variable is an integer type and not a string. Why did not you write the value with %d
?
Current code below:
include <stdio.h>
include <stdlib.h>
include <string.h>
include <locale.h>
struct cadastro{
char nome[50],
email[50];
int ddd[10],
numero_tel[20];
};
struct aniversario_e_numero
{
int dia[3],
mes[3],
ano[9];
};
struct endereco
{
char rua[30],
bairro[20],
cidade[20],
pais[20],
estado[20],
complemento[20];
int cep[20],
numero[20];
};
int main()
{
setlocale(LC_ALL, "");
///Variáveis:
struct cadastro funcionario[100];
int cont = 0,
escolha = 1;
do{
printf("-------------------------\n"
"CADASTRO DE FUNCIONÁRIO:\n"
"-------------------------\n"
"(1) FAZER UM NOVO CADASTRO\n"
"(2) BUSCA POR NOME\n"
"(3) BUSCAR POR MÊS\n"
"(4) BUSCAR POR DIA\n"
"(5) MOSTRAR CADASTRO GERAL\n"
"(6) SAIR DO PROGRAMA\n"
"ESCOLHA UMA OPÇÃO: ");
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] = 'scanf("%s",&funcionario[cont].ddd);
';
fflush(stdin);
printf("INFORME E-MAIL DE FUNCIONÁRIO: ");
fgets(funcionario[cont].email, 50, stdin);
funcionario[cont].email[strlen(funcionario[cont].email)] = 'include <stdio.h>
include <stdlib.h>
include <string.h>
include <locale.h>
struct cadastro{
char nome[50],
email[50];
int ddd[10],
numero_tel[20];
};
struct aniversario_e_numero
{
int dia[3],
mes[3],
ano[9];
};
struct endereco
{
char rua[30],
bairro[20],
cidade[20],
pais[20],
estado[20],
complemento[20];
int cep[20],
numero[20];
};
int main()
{
setlocale(LC_ALL, "");
///Variáveis:
struct cadastro funcionario[100];
int cont = 0,
escolha = 1;
do{
printf("-------------------------\n"
"CADASTRO DE FUNCIONÁRIO:\n"
"-------------------------\n"
"(1) FAZER UM NOVO CADASTRO\n"
"(2) BUSCA POR NOME\n"
"(3) BUSCAR POR MÊS\n"
"(4) BUSCAR POR DIA\n"
"(5) MOSTRAR CADASTRO GERAL\n"
"(6) SAIR DO PROGRAMA\n"
"ESCOLHA UMA OPÇÃO: ");
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] = '%pre%';
fflush(stdin);
printf("INFORME E-MAIL DE FUNCIONÁRIO: ");
fgets(funcionario[cont].email, 50, stdin);
funcionario[cont].email[strlen(funcionario[cont].email)] = '%pre%';
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;
}
';
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;
}