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();
}
}
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);
– mutlei
without struct it gets very complicated to sort all this
– Sveen
That’s what I did. It worked. Thank you!
– Washington_K