Ir ao conteúdo
  • Cadastre-se

C Erro na criação de arquivo


rob.pormann

Posts recomendados

Boa noite, rapa!

 

Estou criando um programa para locação de carros. E criei uma tela de cadastro de carros, estou cadastrando o mesmo carro duas vezes em arquivos diferentes pois vou usá-los para funções diferentes. No entanto, quando vou fazer um segundo cadastro ocorre um erro (a variável categoria aparece repetidamente dentro do arquivo). Alguém pode me ajudar a encontrar o erro neste código? Desde já agradeço MUITO! Segue:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h> 
#include <time.h>

// Declaração das váriaveis do tipo: número, caractere e arquivo de texto.
    
        
    char opcao, nome[150], rg[100], cpf[100], CNH[100], dataNSC[10000] = "  ",localc[100] = "Z:\\Visualg\\Categoria",locallocacao[100] = "Z:\\Visualg\\Locacao_";
    char txt[100] = ".txt", xlsx[100] = ".xlsx", datanasc[10000] = "  ", Linha[100], telefone[10], localcarro[100] = "Z:\\Visualg\\Carro_";
    char UF[2], cidade[150], bairro[150], rua[150], ncasa[50], marca[15], modelo[15], km[15], anocarro[4], categoria[20], status[20], pc[7], Categoria[20];
    char  dataHoraR[10000] = " ", dataHoraE[10000] = "  ";
    FILE *arquivo ,*RegistroLocacao,*RegistroCarro, *ListaCarros, *arq;
    char dateStr[9], timeStr[9];
    
    
     int main ()
    {
        printf("\n\n"); 
        printf(" >>> PREENCHA AS informações DO CARRO: <<< ");
        
        printf("\n\n"); 
        printf("\n MARCA: ");
        gets  (marca);
        setbuf(stdin, NULL);
        
        printf("\n MODELO: ");
        gets (modelo);
        setbuf(stdin, NULL);
       
        printf("\n PLACA: ");
        gets (pc);
        setbuf(stdin, NULL);
        
        printf("\n ANO: ");
        gets (anocarro);
        setbuf(stdin, NULL);
        
        printf("\n KM: ");
        gets (km);
        setbuf(stdin, NULL);
        
        printf("\n CATEGORIA: ");
        gets (Categoria);  
        setbuf(stdin, NULL);  
            
          printf("\n STATUS: ");
           gets (status);
           setbuf(stdin, NULL);
       
       // Concatenação de váriaveis.
       strcat (localc, Categoria);
       strcat (localc, txt);

     // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas.
        if((ListaCarros = fopen(localc,"a")) == NULL)
           {
            printf("Erro ao abrir o arquivo!\n");
            exit(1);
           }
     
     fprintf (ListaCarros,"Marca: %s Modelo: %s Ano: %s Placa: %s KM: %s Categoria: %s Status: %s\n\n", marca, modelo, anocarro, pc, km, Categoria, status);
     fclose(ListaCarros);
     
     
     // Concatenação de váriaveis.
       strcat (localcarro, pc);
       strcat (localcarro, txt);

     // Criando um novo arquivo de texto para que possam ser salvas as informações digitadas.
        if((RegistroCarro = fopen(localcarro,"a")) == NULL)
           {
            printf("Erro ao abrir o arquivo!\n");
            exit(1);
           }
     
     fprintf (RegistroCarro," Marca: %s\n Modelo: %s\n Ano: %s\n Placa: %s\n KM: %s\n Categoria: %s\n Status: %s\n\n\n", marca, modelo, anocarro, pc, km, Categoria, status);
     fclose(RegistroCarro);
     

 

É nois!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Basta 'limpar' as variáveis pc e Categoria antes de usar elas.

Além disso, se você usar repetidamente o programa, como em um loop, sem fechar o programa, as variáveis localc  e localcarro são usadas depois de alteradas, então elas vão acomulando.

Aconselho a usar uma variavel diferente para usar o strcat. Exemplo:

char buffer[300];
buffer[0] = '\0';//seta 0 como final da string, assim strcat começa por 0, porém é melhor limpar com memset

strcat(buffer, localcarro);
strcat(buffer, pc);
strcat(buffer, txt);

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

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

×
×
  • Criar novo...