Ajuda com printf em C

Gente, estou fazendo um código mas estou com problemas na hora de imprimir ele… na hora que é para imprimir o código simplesmente finaliza como se não houvesse nada ali… segue código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
 {
   char nome[50];
   char cargo[50];
   char endereco[100];
   char cpf[11];
   int idade;
   int salario;
 } Funcionario;
Funcionario func[2];

 int main()
 {
  int i;
  for(i=0; i<2; i++) {
    strcpy(func[i].nome, "NULL");
    strcpy(func[i].cargo, "NULL");
    strcpy(func[i].endereco, "NULL");
    strcpy(func[i].cpf, "NULL");
    func[i].idade = 0;
    func[i].salario = 0;
  }
  for(i=0; i<2; i++) {
    printf("\nNome do funcionario: ");
    scanf("%s%*c", &func[i].nome);
    printf("Cargo: ");
    scanf("%s%*c", &func[i].cargo);
    printf("Endereco: ");
    scanf("%s%*c", &func[i].endereco);
    printf("CPF: ");
    scanf("%s%*c", &func[i].cpf);
    printf("Idade: ");
    scanf("%d%*c", &func[i].idade);
    printf("Salario: ");
    scanf("%d%*c", &func[i].salario);
    printf("\nFuncionario registrado com sucesso!\n");
  }
  printf("\nNome e salario de todos funcionario:\n\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n\nTotal: %d", func[0].nome, func[0].salario, func[1].nome, func[1].salario, func[0].salario+func[1].salario);
}

No último printf tem apenas 5 valores, mas vários specifiers. Deveria ser:

printf("\nNome e salario de todos funcionario:\n\n%s: %d\n%s: %d\n\nTotal: %d", etc...)

Na verdade poderia ser um loop imprimindo cada funcionário e somando os salários:

int total = 0;
printf("\nNome e salario de todos funcionario:\n");
for (i = 0; i < 2; ++i) {
    printf("%s: %d\n", func[i].nome, func[i].salario);
    total += func[i].salario;
}
printf("Total: %d\n", total);

Assim ele funciona para qualquer quantidade de funcionários.

1 curtida