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
  • Autor do tópico
  • Você tem algum exemplo? Ou alguma sugestação de como resolver esse problema ?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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
  • Autor do tópico
  • 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

    ×