Ir ao conteúdo
  • Cadastre-se

yooe

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

posts postados por yooe

  1. @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.

    • Curtir 1
  2. @devair1010
    valeu ai por ter deixado mais clean o código e ter alertado sobre o fclose(z), tipo o que tá acontecendo é que esse arquivos estão sendo criados dentro da pasta de origem do programa com arquivos sem um .algumacoisa depois dele(no caso era pra ser .txt) mas se você abrir com o bloco de notas ele abre normalmente com as informações todas, eu to com uma pasta dentre da pasta que ta rodando o programa chamada alunos onde eu vou guardar as informações de cada pessoa que estiver lá e eu planejo fazer um sistema pra não sobre escrever nada e não permitir a entrada de dois arquivos com o mesmo nome resultando em um ser deletado ou ficar com o numero 2 depois dele, to usando a biblioteca "dirent.h" pra isso.

    eu só to um pouco confuso ainda em como eu vou mover esses arquivos de uma pasta para a outra e também como cria-los já sendo um .txt ou mudar para isso, mas eu ainda to testando pra ver se da pra ler eles sem a necessidade disso.

    • Curtir 1
  3. opa, eu to tentando fazer um codigo que pelo que eu vi é bem comum de se achar pela interne para uma cadeira de Iniciação a computação, eu ainda to no começo dele, não fiz erros nem verificação de login nem nada de mais ainda, eu to com um problema que é eu crio um arquivo com o fopen que vai ser nomeado pelo usuário, sendo que ele não cai na pasta certa, eu tentei fazer um caminho para ele no próprio fopen e não consegui e tentei mover ele, sendo que todas as opções que eu achei tinha que saber o nome do arquivo previamente para poder mover ele, e eu não consegui fazer isso com a variável que armazena o dado do login. 
    eu uso o vscode.



     

    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <locale.h>
    
    
    
    int interface_menu();
    
    void menu_1();
    
    void engine();
    
    void menu_2();
    
    FILE *z;
    
    
    
    int main()
    
    
    
    {
    
     int menu0;
    
    
    
        do
    
        {
    
            menu0=interface_menu();
    
            engine(menu0);
    
        }
    
        while(menu0!=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;
    
    }
    
    
    
    void menu_1()
    
    {
    
    
    
     char login[101];
    
     char nome[101];
    
     char nomeData;
    
     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 gets ??? https://www.clubedohardware.com.br/forums/topic/634801-resolvido-porque-o-dev-esta-pulando-o-comando-gets/
    
        z=fopen(login, "w");
    
    
    
        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",nome);
    
        putc('\n', z);
    
    
    
        fprintf(z,"Matricula:%s",matricula);
    
        putc('\n', z);
    
    
    
        fprintf(z,"DDD:%s",DDD);
    
        putc('\n', z);
    
    
    
        fprintf(z,"Telefone:%s",telefone);
    
        putc('\n', z);
    
    
    
        fprintf(z,"cpf:%s",cpf);
    
        putc('\n', z);
    
    
    
        fprintf(z,"idade:%s",idade);
    
        putc('\n', z);
    
        fclose;
    
       
    
    return;
    
    }
    
    void menu_2()
    
    {
    
    
    
    }
    
    
    
    void engine(int N_menu)
    
    {
    
    //int erro1;
    
    
    
        if(N_menu==1)
    
        {  
    
            menu_1();
    
        }
    
        else if(N_menu==2)
    
        {
    
            menu_2();
    
        }
    
    
    
    }

     

    • Amei 1
  4. a tela(LTM190M2-L31) do meu monitor samsung(monitor 19 polegadas 931bw) quebrou e eu to tentando comprar uma nova, eu encontrei dois outros modelos compatíveis oLTM190E1-L01 e o LTM190EX-L31 e seus outros modelos alguém sabe de algum site barato para comprar essas peças ? peças usadas que seja, eu to procurando os sites que as oficinas de pc usam para comprar as suas peças.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!