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;
}