Olá amigo. Eu "consegui" criar o menu para salvar os usuarios, mas de um jeito que ele salva o todos os usuarios no arquivo de uma vez, toda vez que eu cadastro um novo usuario. Se alguem souber como fazer isso de forma que ele adicione só o usuario que eu acabei de cadastrar no arquivo seria melhor. E tambem um método que exclua algum usuario.
#include<iostream>
#include<stdio.h>
#include<conio2.h>
#include<stdlib.h>
#include<string.h>
#include<fstream>
using namespace std;
FILE *arquser=fopen("dbusers.db", "a+");
struct Usuarios{
char nome[ 30];
char sobrenome[ 30];
char cargo[ 30];
char cpf[ 30];
char rg[ 30];
char senha[ 15];
};
Usuarios usuario[9999];
int tam_struct = 0;
void Listar();
void Cadastrar();
void Deletar();
void Inicio();
int main(void){
int i = 0;
bool repete = true;
if(arquser==NULL){printf("Erro no arquivo !\n");exit(0);}
while( fscanf(arquser, "%s", usuario[i].nome ) != EOF &&
fscanf(arquser, "%s", usuario[i].sobrenome ) != EOF &&
fscanf(arquser, "%s", usuario[i].cargo ) != EOF &&
fscanf(arquser, "%s", usuario[i].rg ) != EOF &&
fscanf(arquser, "%s", usuario[i].cpf ) != EOF &&
fscanf(arquser, "%s", usuario[i].senha ) ){
i++;
tam_struct++;
}
fclose(arquser);
Inicio();
}
void Inicio()
{
// INTERFACE
int op;
bool repete = true;
do{
system("cls");
printf("\n\tBEM VINDO - Usuarios - %d \n", tam_struct);
printf("\n 1 - Ver Usuarios Cadastrados.\n 2 - Cadastrar Novo Usuario.\n 3 - Excluir Usuario\n 4 - Sair");
printf("\n Sua escolha: ");
scanf("%d", &op);
switch(op){
case 1:
Listar();
break;
case 2:
Cadastrar();
break;
case 3:
void Deletar();
break;
case 4:
repete == false;
break;
}
}while(repete);
}
void Listar(){
int i=0;
int u=0;
system("cls");
for(i=0;i<tam_struct;i++){
u++;
printf("\n\tUSUARIO %d:", u);
printf("\nNOME: %s %s.", usuario[i].nome, usuario[i].sobrenome);
printf("\nCARGO: %s.", usuario[i].cargo);
printf("\nCPF: %s", usuario[i].cpf);
printf("\nRG: %s", usuario[i].rg);
printf("\n====================================");
}
getch();
Inicio();
}
void Cadastrar(){
int i = 0;
int u = 2;
char temp[30] = "";
system("cls");
i = tam_struct;
u == i;
printf("\tUSUARIO %u", u);
printf("\n NOME: ");
scanf("%s", &temp);
strcpy(usuario[i].nome, temp);
temp == "";
printf("\n SOBRENOME: ");
scanf("%s", &temp);
strcpy(usuario[i].sobrenome, temp);
temp == "";
printf("\n CARGO: ");
scanf("%s", &temp);
strcpy(usuario[i].cargo, temp);
temp == "";
printf("\n CPF: ");
scanf("%s", &temp);
strcpy(usuario[i].cpf, temp);
temp == "";
printf("\n RG: ");
scanf("%s", &temp);
strcpy(usuario[i].rg, temp);
temp == "";
printf("\n SENHA: ");
scanf("%s", &temp);
strcpy(usuario[i].senha, temp);
char s[10] = " ";
char f[10] = "\n";
tam_struct++;
int gravar = 0;
FILE *arqgravar=fopen("dbusers.db", "wt");
while(gravar<tam_struct){
fprintf(arqgravar, usuario[gravar].nome);
fprintf(arqgravar, s);
fprintf(arqgravar, usuario[gravar].sobrenome);
fprintf(arqgravar, s);
fprintf(arqgravar, usuario[gravar].cargo);
fprintf(arqgravar, s);
fprintf(arqgravar, usuario[gravar].cpf);
fprintf(arqgravar, s);
fprintf(arqgravar, usuario[gravar].rg);
fprintf(arqgravar, s);
fprintf(arqgravar, usuario[gravar].senha);
fprintf(arqgravar, f);
gravar++;
}
fclose(arqgravar);
printf("\n\n Pronto! Pressione qualquer botao.");
getch();
Inicio();
}
adicionado 22 minutos depois
Eu sou novo em programação, mas acho que isso que eu fiz se chama "GAMBIARRA NO CÓDIGO". KKKKK