Boa noite, eu preciso criar um programa que cadastre clientes e materiais de estoque para uma empresa fictícia, por enquanto tenho apenas a parte de cadastro de pessoas, enfim. Eu preciso fazer com que esse programa gere arquivos para armazena-los em algum local do pc e com o executável do programa eu consiga dar continuidade no cadastro de pessoas e essas coisas.
Estou muito perdido em relação a Arquivos, gostaria se possível se alguém poderia me ajudar com esse problema
agradeço muito e obrigado pela paciência.
No momento o programa segue da seguinte forma:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <conio.h>
#define BUFFER 64
typedef struct lista {
char *nome;
int idade;
struct lista *proximo;
} Dados;
Dados *inicia_dados(char *nome, int idade);
Dados *insere_dados(Dados *dados, char *nome, int idade);
void exibe_dados(Dados *dados);
void busca_dados(Dados *dados, char *chave);
Dados *deleta_dados(Dados *dados);
int checa_vazio(Dados *dados);
void insere(void);
void exibe(void);
void busca(void);
void deleta(void);
Dados *principal = NULL;
Dados *inicia_dados(char *nome, int idade)
{
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados));
novo->nome = (char *)malloc(strlen(nome)+1);
strncpy(novo->nome, nome, strlen(nome)+1);
novo->idade = idade;
novo->proximo = NULL;
return novo;
}
Dados *insere_dados(Dados *dados, char *nome, int idade) {
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados));
novo->nome = (char *)malloc(strlen(nome)+1);
strncpy(novo->nome, nome, strlen(nome)+1);
novo->idade = idade;
novo->proximo = dados;
return novo;
}
void exibe_dados(Dados *dados) {
fprintf(stdout, "Cadastro:\n\n");
fprintf(stdout, "------------------------\n");
for (; dados != NULL; dados = dados->proximo) {
fprintf(stdout, "Nome: %s\n", dados->nome);
fprintf(stdout, "Idade: %d\n", dados->idade);
fprintf(stdout, "------------------------\n ");
}
printf("Pressione uma tecla para continuar.");
getch();
}
void busca_dados(Dados *dados, char *chave) {
int achou = 0;
fprintf(stdout, "Cadastro:\n\n");
for (; dados != NULL; dados = dados->proximo) {
if (strcmp(chave, dados->nome) == 0) {
fprintf(stdout, "------------------------\n");
fprintf(stdout, "Nome: %s\n", dados->nome);
fprintf(stdout, "Idade: %d\n", dados->idade);
fprintf(stdout, "------------------------\n");
achou++;
}
}
if (achou == 0)
fprintf(stdout, "Nenhum resultado encontrado.\nPressione uma tecla para continuar.\n");
else
fprintf(stdout, "Foram encontrados %d registros. \nPressione uma tecla para continuar.\n", achou);
sleep(1);
getch();
}
Dados *deleta_dados(Dados *dados) {
Dados *novo;
novo = dados->proximo;
free(dados->nome);
free(dados);
fprintf(stdout, "O ultimo registro inserido foi deletado com sucesso.\\n");
sleep(1);
return novo;
}
int checa_vazio(Dados *dados) {
if (dados == NULL) {
fprintf(stdout, "Lista vazia!\\n");
sleep(1);
return 1;
} else
return 0;
}
void insere(void) {
char *nome;
int idade;
nome = (char *)malloc(BUFFER);
fprintf(stdout, "\n\nDigite o Nome: \n----> ");
scanf("%s", nome);
fprintf(stdout, "\n");
fprintf(stdout, "Digite a Idade: \n----> ");
scanf("%d", &idade);
fprintf(stdout, "\n");
if (principal == NULL)
principal = inicia_dados(nome, idade);
else
principal = insere_dados(principal, nome, idade);
}
void exibe(void) {
if (!checa_vazio(principal))
exibe_dados(principal);
}
void busca(void) {
char *chave;
if (!checa_vazio(principal)) {
chave = (char *)malloc(BUFFER);
fprintf(stdout, "Digite o nome para buscar: \\n--> ");
scanf("%s", chave);
busca_dados(principal, chave);
getch();
}
}
void deleta(void) {
if (!checa_vazio(principal))
principal = deleta_dados(principal);
}
int main(void) {
char escolha;
do {
system("cls");
fprintf(stdout, "\n ECOLIFE - Cadastro de Pessoas \n\n");
Pergunta
Phee
Boa noite, eu preciso criar um programa que cadastre clientes e materiais de estoque para uma empresa fictícia, por enquanto tenho apenas a parte de cadastro de pessoas, enfim. Eu preciso fazer com que esse programa gere arquivos para armazena-los em algum local do pc e com o executável do programa eu consiga dar continuidade no cadastro de pessoas e essas coisas.
Estou muito perdido em relação a Arquivos, gostaria se possível se alguém poderia me ajudar com esse problema
agradeço muito e obrigado pela paciência.
No momento o programa segue da seguinte forma:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <conio.h>
#define BUFFER 64
typedef struct lista {
char *nome;
int idade;
struct lista *proximo;
} Dados;
Dados *inicia_dados(char *nome, int idade);
Dados *insere_dados(Dados *dados, char *nome, int idade);
void exibe_dados(Dados *dados);
void busca_dados(Dados *dados, char *chave);
Dados *deleta_dados(Dados *dados);
int checa_vazio(Dados *dados);
void insere(void);
void exibe(void);
void busca(void);
void deleta(void);
Dados *principal = NULL;
Dados *inicia_dados(char *nome, int idade)
{
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados));
novo->nome = (char *)malloc(strlen(nome)+1);
strncpy(novo->nome, nome, strlen(nome)+1);
novo->idade = idade;
novo->proximo = NULL;
return novo;
}
Dados *insere_dados(Dados *dados, char *nome, int idade) {
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados));
novo->nome = (char *)malloc(strlen(nome)+1);
strncpy(novo->nome, nome, strlen(nome)+1);
novo->idade = idade;
novo->proximo = dados;
return novo;
}
void exibe_dados(Dados *dados) {
fprintf(stdout, "Cadastro:\n\n");
fprintf(stdout, "------------------------\n");
for (; dados != NULL; dados = dados->proximo) {
fprintf(stdout, "Nome: %s\n", dados->nome);
fprintf(stdout, "Idade: %d\n", dados->idade);
fprintf(stdout, "------------------------\n ");
}
printf("Pressione uma tecla para continuar.");
getch();
}
void busca_dados(Dados *dados, char *chave) {
int achou = 0;
fprintf(stdout, "Cadastro:\n\n");
for (; dados != NULL; dados = dados->proximo) {
if (strcmp(chave, dados->nome) == 0) {
fprintf(stdout, "------------------------\n");
fprintf(stdout, "Nome: %s\n", dados->nome);
fprintf(stdout, "Idade: %d\n", dados->idade);
fprintf(stdout, "------------------------\n");
achou++;
}
}
if (achou == 0)
fprintf(stdout, "Nenhum resultado encontrado.\nPressione uma tecla para continuar.\n");
else
fprintf(stdout, "Foram encontrados %d registros. \nPressione uma tecla para continuar.\n", achou);
sleep(1);
getch();
}
Dados *deleta_dados(Dados *dados) {
Dados *novo;
novo = dados->proximo;
free(dados->nome);
free(dados);
fprintf(stdout, "O ultimo registro inserido foi deletado com sucesso.\\n");
sleep(1);
return novo;
}
int checa_vazio(Dados *dados) {
if (dados == NULL) {
fprintf(stdout, "Lista vazia!\\n");
sleep(1);
return 1;
} else
return 0;
}
void insere(void) {
char *nome;
int idade;
nome = (char *)malloc(BUFFER);
fprintf(stdout, "\n\nDigite o Nome: \n----> ");
scanf("%s", nome);
fprintf(stdout, "\n");
fprintf(stdout, "Digite a Idade: \n----> ");
scanf("%d", &idade);
fprintf(stdout, "\n");
if (principal == NULL)
principal = inicia_dados(nome, idade);
else
principal = insere_dados(principal, nome, idade);
}
void exibe(void) {
if (!checa_vazio(principal))
exibe_dados(principal);
}
void busca(void) {
char *chave;
if (!checa_vazio(principal)) {
chave = (char *)malloc(BUFFER);
fprintf(stdout, "Digite o nome para buscar: \\n--> ");
scanf("%s", chave);
busca_dados(principal, chave);
getch();
}
}
void deleta(void) {
if (!checa_vazio(principal))
principal = deleta_dados(principal);
}
int main(void) {
char escolha;
do {
system("cls");
fprintf(stdout, "\n ECOLIFE - Cadastro de Pessoas \n\n");
fprintf(stdout, "Escolha uma opcao: \n\n");
fprintf(stdout, "1 - Insere Dados\n");
fprintf(stdout, "2 - Exibe Dados\n");
fprintf(stdout, "3 - Busca Dados\n");
fprintf(stdout, "4 - Deleta Dados\n");
fprintf(stdout, "5 - Sair\n\n");
scanf("%c", &escolha);
switch(escolha) {
case '1':
insere();
break;
case '2':
exibe();
break;
case '3':
busca();
break;
case '4':
deleta();
break;
case '5':
exit(0);
break;
default:
fprintf(stderr,"Digite uma opcao valida!\\n");
sleep(1);
break;
}
}
while (escolha > 0);
return 0;
}
Editado por PheeLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.