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  
rob.pormann

C Erro na criação de arquivo

Recommended Posts

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!

Editado por Simon Viegas
Favor ler tópico e seguir orientações sobre POSTAGEM DE CÓDIGOS: http://www.clubedohardware.com.br/announcement/27-poste-seus-c%C3%B3digos-corretamente/
  • Curtir 1

Compartilhar este post


Link para o post
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);

 

Editado por TYSQUARE89
  • Curtir 2

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

×