Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
linguagem_c

Arquivo em c

Recommended Posts

CLIENTE => número do cliente, nome, telefone, endereço

CONTA BANCÁRIA => número da conta, número do cliente, saldo

Crie um programa que faça o cadastramento de contas, verificando se o número do cliente titular da conta já foi previamente cadastrado. Se existir, deverá permitir a inclusão. Caso contrário, deverá mostrar a mensagem CLIENTE NÃO CADASTRADO e abrir uma tela que permita o cadastramento. O programa deverá mostrar, ao final, todas as contas cadastradas.

A função de cadastro que eu fiz está correta ?

Alguma ideia para fazer as outras duas funções ?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cadastrar(FILE *arquivo);
typedef struct registro{
char nome[30];
int num_cliente, num_conta;
float tel, saldo;
char endereco[30];
}dados;

int main()
{
int op;
FILE *arquivo;
while(op != 4){
printf("(1) Cadastrar \n");
printf("(2) Editar dados \n");
printf("(3) Ver \n");
printf("(4) Sair \n");
printf("Digite uma opcao ");
scanf("%d",&op);
switch(op){
case 1:
cadastrar(arquivo);
break;
case 2:

break;
case 3:

break;
case 4:
exit(0);
break;
}
fclose(arquivo);
}
system("PAUSE");
return 0;
}
void cadastrar(FILE *arquivo){
dados cliente;
if((arquivo = fopen("arquivo.txt","wt")) == NULL){
printf("Erro ao abrir o arquivo\n");
exit(0);
}
else{
printf("Digite o nome \n");
scanf("%s",cliente.nome);
printf("Digite o codigo \n");
scanf("%d",&cliente.num_cliente);
printf("Digite o telefone \n");
scanf("%f",&cliente.tel);
printf("Digite o endereco \n");
scanf("%s",cliente.endereco);
fprintf(arquivo, "%s \n", cliente.nome);
fprintf(arquivo, "%d \n", cliente.num_cliente);
fprintf(arquivo, "%f \n", cliente.tel);
fprintf(arquivo, "%s \n", cliente.endereco);
}
fclose(arquivo);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo viciado123 (*** mas que nome você foi escolher hein)... sim sua função esta errada... ela so compara com a primeira linha do arquivo... sugiro que você coloque ela em alguma estrutura de repetição para que ela varra todo o arquivo base e lhe de um resultado confiavel...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer a função cadastrar, como posso fazer a função para editar o arquivo ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cadastrar(FILE *arquivo);

typedef struct{
char nome[30];
int num_cliente, num_conta;
float saldo;
char tel[11];
char endereco[30];
}dados;

int main()
{
int op;
FILE *arquivo;
while(op != 4){
printf("(1) Cadastrar \n");
printf("(2) Editar dados \n");
printf("(3) Ver \n");
printf("(4) Sair \n");
printf("Digite uma opcao ");
scanf("%d",&op);
switch(op){
case 1:
cadastrar(arquivo);
break;
case 2:

break;
case 3:

break;
case 4:
exit(0);
break;
}
}
system("PAUSE");
return 0;
}
void cadastrar(FILE *arquivo){
dados cliente;
int i;
getchar();
arquivo = fopen("arquivo.txt","w+");
printf("Digite o nome \n");
scanf("%s", cliente.nome);
printf("Digite o codigo \n");
scanf("%d",&cliente.num_cliente);
printf("Digite o telefone \n");
scanf("%s",&cliente.tel);
printf("Digite o endereco \n");
scanf("%s",cliente.endereco);
fprintf(arquivo, "%s \n", cliente.nome);
fprintf(arquivo, "%d \n", cliente.num_cliente);
fprintf(arquivo, "%s \n", cliente.tel);
fprintf(arquivo, "%s \n", cliente.endereco);
fclose(arquivo);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

a logica de editar um arquivo e algo um pouco mais complicado devido ao seguinte fato... você nao pode simplesmente dar um backspace e colocar algo no lugar... para resolver esse problema existem varias formas... você pode carregar tudo pra memoria e trocar a informação que te interessa... ou você pode usar o sisteminha de copia de arquivo... ai cabe a você... mas antes de se preocupar com a edição... faz uma funcao ai que imprime o conteudo de TXT todo na tela...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro na linha 47: 'count' undeclared

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

#define MAX 10
struct cliente
{
int num_cliente;
char nome[30];
int tel;
char endereco[50];
}cliente[MAX];
struct conta
{
int num_conta;
float saldo;
}conta[MAX];
int verifica(int num);
int sair_salvar(int count, int contador);
void exibir();
void incluir();
void cadastrar();
int main()
{
int op;
while(op != 4){
printf("(1) Cadastrar cliente \n");
printf("(2) Incluir saldo \n");
printf("(3) Ver contas \n");
printf("(4) Sair \n");
scanf("%d",&op);
switch(op){
case 1:
cadastrar();
break;
case 2:
incluir();
break;
case 3:
exibir();
case 4:
sair_salvar(count, contador);
break;
}
}
system("PAUSE");
return 0;
}
void cadastrar(){
char tecla = 's';
int i;
int count = 0;
for(i=0;i<MAX;i++){
printf("Digite o codigo \n");
scanf("%d",&cliente[i].num_cliente);
if(verifica(cliente[i].num_cliente)){
printf("Cliente ja cadastrado \n");
incluir();
}
else{
printf("Digite o nome \n");
scanf("%s",&cliente[i].nome);
printf("Digite o telefone \n");
scanf("%d",&cliente[i].tel);
printf("Digite o endereco \n");
scanf("%s",&cliente[i].endereco);
}
count++;
printf("Digite enter para cadastrar outro cliente ou s para sair \n");
tecla = getch();
if(tecla == 's')
break;
}
}
void incluir(){
int cod;
printf("Digite o codigo \n");
scanf("%d",&cod);
int i, contador = 0;
for(i=0;i<MAX;i++){
if(!verifiva(cod)){
printf("Digite o numero da conta \n");
scanf("%d",&conta[i].num_conta);
printf("Digite seu saldo \n");
scanf("%f",&conta[i].saldo);
contador++;
}
else{
printf("Codigo errado \n");
}
}
}
void exibir(){
int cod;
int i;
printf("Digite o codigo \n");
scanf("%d",&cod);
if(verifica(cod)){
printf("Codigo errado \n");
}
else{
for(i=0;i<MAX;i++){
if(cod == cliente[i].num_cliente){
printf("Nome: %s \n",cliente[i].nome);
printf("Telefone: %d \n",cliente[i].tel);
printf("Endereco: %s \n",cliente[i].endereco);
}
}
}
}
int sair_salvar(int count, int contador){
FILE *fp;
fp = fopen("arquivo.txt","w+");
int i;
for(i=0;i<count;i++){
fprintf(fp,"\n\n DADOS DO CLIENTE \n\n");
fprintf(fp,"Codigo: %d \n",cliente[i].num_cliente);
fprintf(fp,"Nome: %s \n",cliente[i].nome);
fprintf(fp,"Telefone %d \n",cliente[i].tel);
fprintf(fp,"Endereco: %s \n",cliente[i].endereco);
}
for(i=0;i<contador;i++){
fprintf(fp,"\n\n DADOS DA CONTA \n\n");
fprintf(fp,"Numero da conta: %d \n",conta[i].num_conta);
fprintf(fp,"Saldo: %f \n",conta[i].saldo);
}
exit(0);
}
int verifica(int num){
int i;
for(i=0;i<MAX;i++){
if(num == cliente[i].num_cliente){
return 0;
}
else {
return 1;
}
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você sinceramente espera que eu leia tudo isso ae... conte as linhas... ache a linha 47... e te diga o mesmo que o computador ja te disse!?!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×