int cod; //Cria um estrutura onde vai ser pedido o código, nome e salário.
char nome[256];
float salario;
} em[1000]; //Podem ser cadastrados até 1001 funcionários.
int cont = 0; //contador definido em 0 sendo uma variavel global
void recuperar(); //Declaração das mesmas abaixo
void nucleo();
int main (void){
int menu = 0, size;
FILE *con;//aponta para um variavel (con)
con = fopen("cont.txt", "rb");//con sera igual o arquivo que sera pra escrita e leitura
if (con == NULL) {
printf ("ERRO! ARQUIVO NAO EXISTENTE\n");
exit (1);
};
fread(&cont, sizeof(int), 1, con);//pega as informações de dentro do txt
printf("\n%d", cont);
fclose(con);
recuperar(); // recupera os dados do txt que já foram salvas
do {
printf("|__MENU___|\n");
printf("|[1]CADASTRO\n"); //menu
printf("|[2]LISTAR\n");
printf("|[0]SAIR\n");
scanf (" %d", &menu);
switch(menu){
case 1:
nucleo();//conta
break;
case 2:
printf ("\n%d", cont);
for (int i = 0; i <= cont ; i++){
printf("\nCODIGO: %d", em[i].cod);
printf("\nNOME: %s", em[i].nome);
printf("\nSALARIO: %.2f\n\n", em[i].salario);
}
break;
void nucleo(void){
int opcao = 0, p = 0, au = 0;
float aux = 0;
FILE *arquivo;//abre o arquivo
arquivo = fopen ("arquivo.txt", "ab");//abre em modo apendice(abre o documento e acrescente sem excluir)
if (arquivo == NULL) {
printf ("ERRO! ARQUIVO NAO EXISTENTE\n");
exit (1);
};
do{
printf("%d\n", cont);
cont += 1;
do {
printf ("Digite o codigo do funcionario:\n");//digita o codigo
scanf ("%d", &em[cont].cod);//salva dentro da estrutura
for (int i = 0 ; i < cont; i++) {//vai repetir até o i ser igual o contador
if ( em[i].cod == em[cont].cod ) {
printf ( "Esse cadastro ja existe \n" );
p = 1;
} else {
p = 0;
};
}
}while ( p == 1 );
do {
printf ("Digite o nome do funcionario:\n");
scanf (" %[^\n]s", & em[cont].nome);// [^/n]s obriga a aceitar toda a string ate o /n , jogando o /n pra proxima string (o espaco entre " %[^/n]s" serve pra limpar o buff.
setbuf(stdin, NULL);//remove o /n da proxima string;
for (int i = 0 ; i < cont; i++) {
if ( stricmp(em[i - 1].nome, em[cont].nome) == 0 ) {
printf ( "Esse cadastro ja existe \n" );
p = 1;
} else {
p = 0;
};
}
}while (p != 0);
printf ( "Digite o salario do funcionaro:\n" );
scanf ( "%f",& em[cont].salario );
printf ( "Deseja continuar cadastrando?\n [1]SIM\t [2]NAO \n" );
scanf ("%d", &opcao);
aux = em[cont].salario;//tudo que ta dentro de salario vai para aux
if ( em[cont].salario < 2500 ) {//se o salario for menor que 2500 a varial aux vai ser multiplicada por 11, se ser maior vai ser por 9
aux *= 11;
} else {
aux *= 9;
}
aux /= 100;//aux divite por 100 e salva dentro da aux( /= )
em[cont].salario -= aux;//desconta o valor dentro de auxiliar com o salario e já salva em salario
fwrite(&em[cont], sizeof(em), 1, arquivo);
//manda a estrutura pra dentro do documento
}while (opcao == 1);
fclose(arquivo);//fecha o arquivo
FILE *con;//aponta para um variavel (con)
con = fopen("cont.txt", "wb");
fwrite(&cont, sizeof(int), 1, con);//manda as informações pra dentro do txt
fclose(con);
system ("cls");
}
void recuperar(void){
FILE *arquivo;// file aponta para um contador (arquivo)
arquivo = fopen("arquivo.txt","rb");
if(arquivo == NULL) {
printf("ARQUIVO NAO EXISTENTE!");
exit(1);
}
for (int i = 0; i <= cont ; i++){
fread(&em, sizeof(em), 1, arquivo);//salva a estrutura inteira pra dentro do variavel
}
fclose(arquivo);//fecha o arquivo
}