@arfneto obrigado pela ajuda eu consegui progredir com o código agora de noite!!!
eu só to tendo problemas com o fgets, toda vez que eu coloco ele o programa para de funcionar, então eu deixei no gets por hora, depois eu procuro uma solução, quanto aos espaços por algum motivo quando eu olhei agora eles tão dobrados e triplicados e um deles até estava quadriplicado, não sei o que aconteceu, mas obrigado mesmo assim eu tirei os espaços do meu texto, eu não pretendo fazer esse role que você falou na engine() porque ela vai tratar de erros e outras coisas também, não só os menus, eu só não tive tempo de fazer ainda. eu pretendo colocar as limitações de inputs e alguns erros que eu consigo pensar pra fazer esse programa, quanto ao int main() que você sugeriu ele não funciona no meu programa, talvez pela forma esquisita que eu escrevo.
o programa tá assim agora se você quiser saber:
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"
#include "string.h"
#include "dirent.h" //para poder pesquisar em apastas.
int interface_menu();
int menu_1();
int engine();
int menu_2();
FILE *z;
int main()
{
int opt;
do
{
opt=interface_menu();
engine(opt);
}
while(opt!=4);
return 0;
}
int interface_menu()
{
int N_menu;
printf("informe para onde você que ir \n");
printf(" 1- cadastrar \n 2- alterar as suas informacoces \n 3- verificar a lista de cadastrados \n 4- para finalizar\n");
scanf("%d", &N_menu);
return N_menu;
}
int menu_1()
{
char login[101];
char nome[101];
char matricula[13];
char DDD[3];
char telefone[10];
char cpf[13];
char idade[3];
printf("agora vamos pegar algumas de suas informações\ndigite o seu login: \n");
gets(login);
gets(login);
//por que tem 2 fgets ??? https://www.clubedohardware.com.br/forums/topic/634801-resolvido-porque-o-dev-esta-pulando-o-comando-gets/
char local_inicial[100] ="C:\\Users\\davic\\Desktop\\Lista de livros da ufpb\\P5\\prova 3 C\\";
char local_final[100] = "C:\\Users\\davic\\Desktop\\Lista de livros da ufpb\\P5\\prova 3 C\\alunos\\";
strcat(local_inicial, login);
strcat(local_final, login);
strcat(local_final,".txt");
z=fopen(login, "w");
//obtendo os dados
printf("digite o seu nome\n");
gets(nome);
printf("digite a sua matricula\n");
gets(matricula);
printf("digite o DDD\n");
gets(DDD);
printf("agora digite o seu numero de telefone\n");
gets(telefone);
printf("digite o seu cpf\n");
gets(cpf);
printf("digite a sua idade\n");
gets(idade);
// Colocando no arquivo as informações
fprintf(z,"Nome:%s\n\nMatricula:%s\nDDD:%s\nTelefone:%s\ncpf:%s\nidade:%s\n",nome,matricula,DDD,telefone,cpf,idade);
fclose(z);
rename(local_inicial, local_final);
return 0;
}
int menu_2()
{
char login;
printf("por favor digite o seu login\n");
scanf("%c", &login);
scanf("%c", &login);
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("C:\\Users\\davic\\Desktop\\Lista de livros da ufpb\\P5\\prova 3 C\\alunos"))!= NULL)
{
/* print all the files and directories within directory */
while ((ent = readdir (dir)) != NULL) {
printf ("%s\n", ent->d_name);
}
closedir (dir);
}
else
{
/* could not open directory */
perror ("");
return;
}
if((z=fopen(login, "r+"))==-1)
{
printf("esse login não existe");
}
}
int engine(int N_menu)
{
if(N_menu==1)
{
menu_1();
}
else if(N_menu==2)
{
menu_2();
}
return 0;
}
no menu dois eu vou fazer a listagem dos arquivos .txt e comparação do login com digitado para ai então abrir a pasta de substituir as informações.
ainda tem um menu 3 que eu tenho que listar todos os dados num printf ou em outro arquivo pra ficar organizadinho, pensei até em usar o execel, mas acho que eu só vou estar colocando trabalho de mais pra ser feito, e deoius eu vou para lidar com os erros e imposição dos limites dos inputs.
minha duvida toda com isso era só o comando strcat que eu não conhecia e eu acabei resolvendo por rename pra não ficar fugindo tanto das bibliotecas padrão.