fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5. typedef struct {
  6. int matricula;
  7. float salario;
  8. } Funcionario;
  9.  
  10. int ler_dados(void) {
  11. int dado;
  12. printf("Digite a matrícula:\t");
  13. scanf(" %d", &dado);
  14. return dado;
  15. }
  16. float ler_salario(void) {
  17. float salario;
  18. printf("Digite o valor do salário:\t");
  19. scanf(" %f", &salario);
  20. return salario;
  21. }
  22. int inserir_funcionario(Funcionario **funcionarios, int tamanho) {
  23. *funcionarios = realloc(*funcionarios, sizeof(Funcionario) * (tamanho + 1));
  24. (*funcionarios)[tamanho].matricula = ler_dados();
  25. (*funcionarios)[tamanho].salario = ler_salario();
  26. return ++tamanho;
  27. }
  28. int main(void) {
  29. setlocale(LC_ALL,"Portuguese");
  30. Funcionario *funcionarios = malloc(sizeof(Funcionario));
  31. int tamanho = 0;
  32. for (int i = 0; i < 5; i++) {
  33. printf("Sizeof : %lu\n", sizeof(Funcionario));
  34. printf("Executou: %d\n", i + 1);
  35. printf("Tamanho: %d\n\n", tamanho);
  36. tamanho = inserir_funcionario(&funcionarios, tamanho);
  37. printf("\ndado: %d\n\n", funcionarios[tamanho].matricula);
  38. }
  39. }
  40.  
  41. //https://pt.stackoverflow.com/q/326686/101
Success #stdin #stdout 0s 11064KB
stdin
a
1
b
2
c
3
d
4
e
5
stdout
Sizeof : 8
Executou: 1
Tamanho: 0

Digite a matrícula:	Digite o valor do salário:	
dado: -1990745856

Sizeof : 8
Executou: 2
Tamanho: 1

Digite a matrícula:	Digite o valor do salário:	
dado: 838520832

Sizeof : 8
Executou: 3
Tamanho: 2

Digite a matrícula:	Digite o valor do salário:	
dado: 81

Sizeof : 8
Executou: 4
Tamanho: 3

Digite a matrícula:	Digite o valor do salário:	
dado: 48

Sizeof : 8
Executou: 5
Tamanho: 4

Digite a matrícula:	Digite o valor do salário:	
dado: 65