Problema na hora do printf em C

Está imprimindo coisas aleatórias no printf..

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.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;
  setlocale(LC_ALL,"portuguese");
  Funcionario soma;
  soma.salario= func(1).salario + func(2).salario;
  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", &func(i).nome);
    printf("Cargo: ");
    scanf("%s", &func(i).cargo);
    printf("Endereco: ");
    scanf("%s", &func(i).endereco);
    printf("CPF: ");
    scanf("%s", &func(i).cpf);
    printf("Idade: ");
    scanf("%d", &func(i).idade);
    printf("Salario: ");
    scanf("%d", &func(i).salario);
    printf("nFuncionario registrado com sucesso!n");
  }
    printf("nNome e salario de todos funcionario:nn%s: %dn%s: %dn%s: %dn%s: %dn%s: %dnnTotal: %d", func(1).nome, func(1).salario, func(2).nome, func(2).salario, soma.salario);
}