Write.txt file content to C/ C++ array

Asked

Viewed 1,444 times

0

How do I take the values of a.txt file and place them in a name, phone and email array and sort them by name. I can’t use struct.

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <locale.h>

    void cadastrar(void);
    void menu(void);
    void listar(void);
    char validaresp(void);
    void menu_secundario(void);
    void preencher(int *vet);

    char nome[50];
    char email[50];
    char telefone[50];
    //função para criar o arquivo txt
    FILE* AbreArquivo(char modo, char caminho[30])
    {
        FILE *arquivo;
        switch(modo)
        {
        case 'g':
            arquivo = fopen(caminho,"wt");
            break;
        case 'l':
            arquivo = fopen(caminho,"rt");
            break;
        case 'a':
            arquivo = fopen(caminho,"a");
            break;
        }
        if(arquivo==NULL)       //Se houver algum erro, o ponteiro apontará para NULL
        {
            printf("Nao foi possivel abrir o arquivo");
            exit(0);
        }
        return arquivo;
    }
    //função para fechar arquivo txt
    void FecharArquivo(FILE *arquivo)
    {
        fclose(arquivo);
    }

    //função principal
    int main()
    {
        setlocale(LC_ALL, "Portuguese");//habilita a acentuação para o português
        system("color A");
        system("title   AGENDA ELETRÔNICA");
        menu();

        return 0;

    }
    //função menu
    void menu(void)
    {
        char variavel_entrada;

        system("cls");

        printf("\n\n");
        printf("                            .::AGENDA ELETRÔNICA::.  \n\n");
        printf("                 Veja todas as funcoes disponiveis no menu   \n");
        printf("                 use os números para selecionar a opção desejada.  \n");
        printf("\n\n");
        printf("\n                                 MENU PRINCIPAL:");
        printf("\n                        +-------------------------------+ ");
        printf("\n                        | (1) - Cadastrar               |");
        printf("\n                        | (2) - Listar todos os contatos|");
        printf("\n                        | (3) - excluir                 |");
        printf("\n                        | (0) - Sair                    |");
        printf("\n                        +-------------------------------+ ");


        printf("\n\n                          Selecione a opção desejada: ");

        scanf(" %c",&variavel_entrada);

        switch (variavel_entrada)
        {
        case '0':

            system("cls");
            printf("Programa encerrado pressione uma tecla para sair.\n");
            exit(0);

        case '1':

            system("cls");// limpando o console
            //chamada do método cadastrar
            cadastrar();

            break;
        case '2':
            system("cls");
            listar();
            system("pause");
            menu();

            break;

        case '3':
            system("cls");
            break;

        default:
            system("cls");
            printf("Opção inválida!\n");
        }
    }
    //função para cadastrar pessoas a lista telefônica '
    void cadastrar(void)
    {
        int total = 0;

        char op = 's';
        while(total < 100 && (op == 's' ) || (op == 's' ))
        {
            printf("\nDigite seu nome:");
            setbuf(stdin,NULL);
            gets(nome);
            printf("\nDigite seu email:");
            gets(email);
            printf("\nDigite seu telefone:");
            gets(telefone);
            fflush(stdin);

            FILE *arquivo;
            arquivo = AbreArquivo('a', "teste.txt");
            fprintf(arquivo, "%s %s %s \n", nome,email,telefone);
            FecharArquivo(arquivo);

            total ++;
            op = validaresp();
            system("cls");
        }
        menu_secundario();
    }

Displaying the contents of the test.txt file. The contents are recording well.

 void listar(void)
    {
        FILE *arquivo;
        arquivo = AbreArquivo('l',"teste.txt");

        while(!feof(arquivo))
        {
            fscanf(arquivo,"%s %s %s ", &nome,&email,&telefone);
            printf("Nome: %s  - Email: %s - Telefone: %s \n", nome,email,telefone);
        }
        FecharArquivo(arquivo);
    }
    //função para validar resposta de usuário
    char validaresp(void)
    {
        char op = 's';

        printf(" \nDeseja inserir novos dados? [S ou N] ? " );
        scanf("%s",&op);
        printf("\n" );
        system("cls");
        return op;
    }
    //menu secundário
    void menu_secundario()
    {

        char sair;

        printf("\n +---------------------------+ ");
        printf("\n |                           |");
        printf("\n | Deseja sair? [S/N]        |");
        printf("\n | Deseja voltar ao menu:[M] |");
        printf("\n |                           |");
        printf("\n +---------------------------+ ");
        scanf ("%s",&sair);

        if((sair == 'S') || (sair == 's')){
            system("cls");
            printf("Programa encerrado pressione uma tecla para sair.\n");
            system(0);
        }else if((sair == 'N') || (sair == 'n')){
                system("cls");
                }else if((sair == 'M') || (sair == 'm')){
                    //chamada do método menu
                    menu();
                }


    }
  • 1

    Will you pick up multiple groups of name, email and phone or just one group? If there are several, it would be best to use a char pointer pointer to store multiple records. And that for each of the fields. Something like char **nome, **telefone, ** email; and **nome = (char*) malloc(tamanho aqui);

  • without struct it gets very complicated to sort all this

  • That’s what I did. It worked. Thank you!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.