-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathestrutura_de_dados_Struct.c
65 lines (48 loc) · 2.12 KB
/
estrutura_de_dados_Struct.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Usando a funções Struct para ALOCAÇÃO DE MEMÓRIA utilizando MALLOC E REALLOC;
// Struct podem ser referenciados com uso de ponteiro na chamada da função. Neste caso, poderia ser inserido também um laço FOR para realizar inúmeros cadastros...
//Foi inserido uma função especial ignoreRestOfLine() para ignorar o espaço para Nomes compostos, inserindo também uma escrita especial no scanf("%14[ .a-zA-Z]%*[^\n]", p->nome);
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
static void ignoreRestOfLine(void) //Para igonorar o espaços entre caracter;
{
char c;
while((c = getchar()) != '\n' && c != EOF);
/* discard */
}
struct Cadastro_func
{
char nome[100];
float salario;
struct nascimento
{
int dia;
int mes;
int ano;
}dt_nascimento;
};
int main(void)
{
// Ponteiro para a estrutura:
struct Cadastro_func *p;
// Alocação de memória para o PONTEIRO da estrutura:
p = (struct Cadastro_func*)malloc(sizeof(struct Cadastro_func));
// String é um (Vetor de Caracteres) é um ponteiro:
//(->): Chama-se pointer member(apontador de membro),substitue a referência do (.)
printf("\nDigite um Nome:");
scanf("%14[ .a-zA-Z]%*[^\n]", p->nome);
printf("\nDigite qual o Salario:");
scanf("%f", &p->salario);
printf("\nData de Nascimento:");
scanf("%d%d%d", &p->dt_nascimento.dia,
&p->dt_nascimento.mes,
&p->dt_nascimento.ano);
ignoreRestOfLine(); // Função para reconhecer espaço.
printf("\n===== Dados Digitados ========");
printf("\nNome: %s",p->nome);
printf("\nSalario R$:%.2f", p->salario);
printf("\nNascimento: %d/%d/%d", p->dt_nascimento.dia,
p->dt_nascimento.mes,
p->dt_nascimento.ano);
return 0;
}