Я динамически распределяю количество оперативной памяти, которое мне понадобится для моей программы. Работает нормально, пока не наткнулся на эту проблему. Это когда я набираю контент, который будет внутри моего единственного элемента, который находится внутри структуры, которая называется Integer, если я наберу, например, более 10 цифр (12345678912), он отправит меня обратно, совершенно другой число.
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
struct cadastro
{
char email[50];
char nome[20];
int idade;
int telefone;
};
int main()
{
int quantidade_cadastros;
int decisao = 1;
printf("\nQuantos cadastros deseja realizar?\n");
printf("Quantidade: ");
scanf("%d", &quantidade_cadastros);
getchar();
//Definindo a quantidade de cadastros que podem ser realizados no struct e o nome que sera usado para chamar o struct
struct cadastro *cad;
cad = NULL;
cad = malloc(quantidade_cadastros * sizeof(struct cadastro));
for (int i = 0; i < quantidade_cadastros; i++)
{
printf("\nDigite o NOME da pessoa que sera inserida no indice %d: ", i);
fgets(cad[i].nome, 20, stdin);
printf("Digite o EMAIL da pessoa que sera inserida no indice %d: ", i);
fgets(cad[i].email, 50, stdin);
printf("Digite a IDADE da pessoa que sera inserida no indice %d: ", i);
scanf("%d", &cad[i].idade);
getchar();
printf("Digite o TELEFONE da pessoa que sera inserida no indice %d: ", i);
scanf("%d", &cad[i].telefone);
getchar();
}
for (int i = 0; i < quantidade_cadastros; i++)
{
printf("\nNOME: %s", cad[i].nome);
printf("EMAIL: %s", cad[i].email);
printf("IDADE: %d", cad[i].idade);
printf("\nTELEFONE: %d", cad[i].telefone);
printf("\n");
}
printf("\n");
free(cad);
}
Вот введенный мною ввод:
Quantos cadastros deseja realizar?
Quantidade: 2
Digite o NOME da pessoa que sera inserida no indice 0: Test1
Digite o EMAIL da pessoa que sera inserida no indice 0: Email1
Digite a IDADE da pessoa que sera inserida no indice 0: 19
Digite o TELEFONE da pessoa que sera inserida no indice 0: 1234567891
Digite o NOME da pessoa que sera inserida no indice 1: Test2
Digite o EMAIL da pessoa que sera inserida no indice 1: Email2
Digite a IDADE da pessoa que sera inserida no indice 1: 18
Digite o TELEFONE da pessoa que sera inserida no indice 1: 12345678912
NOME: Test1
EMAIL: Email1
IDADE: 19
TELEFONE: 1234567891
NOME: Test2
EMAIL: Email2
IDADE: 18
TELEFONE: -539222976