Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

Você tem algum exemplo? Ou alguma sugestação de como resolver esse problema ?

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

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

×