Programa de cadastro em C

Olá galera, sou novato na programação em C, e estou fazendo um programa de cadastro, mas estou enfrentando alguns problemas. Estou fazendo o código em pedaços conforme a função que o usuario pedir. Quando gravo um arquivo, na próxima opção, tento ler ele, mas nao aparece nada. Fui olhar a pasta do arquivo criada e tb nao tem nd dentro, ou ele não ta gravando, ou ele nao ta mostrando o que tem gravado devido a erros de implementação, ou os dois. Gostaria que me dessem uma dica doq eu estivesse fazendo errado!

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

struct cadastro
{
int codigo;
char nome[20];
int salario;
};

struct cadastro empregado;

void adicionar();
void alterar();
void excluir();
void procurar();
void listar();
void listarTodos();

int main()
{
struct cadastro c;
int opcao = 10;

while (opcao != 0)
{
printf("=================CADASTRO DE EMPREGADOS================= \n");
printf("********** 1. Adicionar \n");
printf("
2. Alterar \n");
printf("
3. Excluir \n");
printf("
4. Procurar \n");
printf("
5. Listar \n");
printf("
6. Listar todos \n");
printf("
0. Sair **********\n");
printf("=================CADASTRO DE EMPREGADOS================= \n");

  printf(" Digite sua opcao: ");
  scanf("%d",&opcao);
  printf("\n");

  if (opcao == 1)
  {
     adicionar(c);
     system("clear");
  }
  else if (opcao == 2)
  {
     printf("\n");
     //alterar(c);
     printf("\n");
  }
  else if (opcao == 3)
  {
     printf("\n");
     //excluir(c);
     printf("\n");
  }
  else if (opcao == 4)
  {
     printf("\n");
     //procurar(c);
     printf("\n");
  }
  else if (opcao ==  5)
  {
     printf("\n");
     //listar(c);
     printf("\n");
  }
  else if (opcao == 6)
  {
     printf("\n");
     listarTodos();
     printf("\n");
  }
  else 
  {
     opcao = 0;
  }

}
}

void adicionar()
{
FILE *fp;
struct cadastro c;
fp = fopen(“cadastro.dat”, “w”);
int opcao = 1;
do
{
printf("\nCADASTRO DE CLIENTES\n\n");

	printf("\nDigite o nome: ");
	scanf("%s", c.nome);

	printf("\nDigite o código: ");
	scanf("%d", &c.codigo);

	printf("\nDigite o salário: ");
	scanf("%d", &c.salario);

	printf("Digite 1 para novo cadastro ou 0 para sair: ");
	scanf("%d", &opcao);
}
while (opcao == 1);
fclose(fp);

}

void listarTodos()
{
FILE *fp;
struct cadastro c;
int continua = 1;

fp = fopen("cadastro.dat", "rb");

if (fp == NULL)
{
	printf("Erro ao abrir arquivo");
	getchar();
	//return 1;
}
while (continua == 1)
{
	fread (&c, sizeof(c), 1, fp);

	if (feof(fp))
	{
		continua = 0;
	}
	else
	{
		printf("%s\t", c.nome);
		printf("%d\t", c.codigo);
		printf("%d\t", c.salario);
	}
}
fclose(fp);
//return 0;

}