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[tamanho].matricula = ler_dados();
  24. funcionarios[tamanho].salario = ler_salario();
  25. return ++tamanho;
  26. }
  27. int main(void) {
  28. setlocale(LC_ALL,"Portuguese");
  29. Funcionario *funcionarios = malloc(sizeof(Funcionario));
  30. int tamanho = 0;
  31. for (int i = 0; i < 5; i++) {
  32. printf("Sizeof : %lu\n", sizeof(Funcionario));
  33. printf("Executou: %d\n", i + 1);
  34. printf("Tamanho: %d\n\n", tamanho);
  35. funcionarios = realloc(funcionarios, sizeof(Funcionario) * (tamanho + 1));
  36. tamanho = inserir_funcionario(funcionarios, tamanho);
  37. }
  38. }
  39.  
  40. //https://pt.stackoverflow.com/q/326686/101
Success #stdin #stdout 0s 11064KB
stdin
Standard input is empty
stdout
Sizeof : 8
Executou: 1
Tamanho: 0

Digite a matrícula:	Digite o valor do salário:	Sizeof : 8
Executou: 2
Tamanho: 1

Digite a matrícula:	Digite o valor do salário:	Sizeof : 8
Executou: 3
Tamanho: 2

Digite a matrícula:	Digite o valor do salário:	Sizeof : 8
Executou: 4
Tamanho: 3

Digite a matrícula:	Digite o valor do salário:	Sizeof : 8
Executou: 5
Tamanho: 4

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