Ir para conteúdo
losmafia

Tratamento de Aquivo TXT C++

Recommended Posts

Galera boa tarde. estou com um probleminha em um programinha que estou fazendo e precisava de ajuda, vamos lá, para vocês entenderem melhor irei explicar abaixo o que tenho que fazer.

Recebo um arquivo .TXT e crio um algoritmo para transformar o conteúdo desse documento txt em outro txt mas com alguns cuidados.

Existem 18 parametros cada um desses 18 parametros existem linhas especificas, segundo o layout no parametro 1 eu tenho um tamanho maximo até 40, não significa que serão 40 poderá ser menos. Essa regra se aplica aos outros 17... 

O arquivo irá vir em ; (ponto e virgula) então tenho que criar um algoritmo para localizar esse ; e substituir pelo | (pipe).

 

Até então consegui Ler o arquivo e escreve-lo, mas na hora de colocar a lógica da substituição do ; (ponto e virgula) pelo (|) pipe não estou conseguindo formular. Segue meu código abaixo:

 

#include <iostream>
#include <fstream>
#include <locale>

using namespace std;

Declan(){
    
    
    ifstream arquivo;
    ofstream arquivox2;
    
    arquivo.open("matheus.txt"); // abre arquivo p leitura
    arquivox2.open("arquivox2.txt"); // abre arquivo p escrita

  

 string linha;

        
    if (arquivo.is_open() && arquivox2.is_open() )
    {
        while (getline(arquivo,linha)) 
        {
            cout<< linha;
            
            if(linha = ";")
        {                    
             arquivox2 <<linha  <<endl; 
        }
    }
  }
}

int main (){
    
    
    Declan();
    
    
    return 0;
}

 

Eu travo na estrutura de decisão onde eu quero que: o programa esteja lendo o arquivo linha por linha, quando ele encontrar o ;(ponto e virgula) ele troque aquele pelo (|) pipe e continue lendo até achar novamente o (;) ponto e virgula  trocando pelo (|) pipe e assim até acabar a leitura do arquivo. 

 

OBS: O delimitador de caracter nao é mt importante agr, mas a substituição do ; pelo |  é fundamental para eu conseguir dar prosseguimento. 

 

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

  • Conteúdo Similar

    • Por matt.valenzza@gmail.com
      Preciso fazer uma lista duplamente encadeada para ela inserir os números, mostrando eles, localizar em qual posição eles estão e excluir. Eu fiz o código, mas preciso que os números mostrem o número atual, o anterior e o próximo. Que na hora de compilar, que ele mostre o numero anterior, o atual e o próximo em um pequeno menuzinho.
       
      Segue o código que eu criei até agora. 
       
       
       
       
      #include <stdio.h> struct Lista{ int num; struct Lista *prox; struct Lista *ant; }; struct Lista* criarNovoElemento(){ struct Lista *novo = NULL; novo = malloc(sizeof(struct Lista)); printf("Informe o numero..: "); scanf("%i", &(*novo).num); (*novo).prox = NULL; return novo; } inserir (struct Lista **a){ if (*a == NULL){ *a = criarNovoElemento(); } else{ struct Lista *aux; aux = *a; while( (*aux).prox != NULL){ aux = (*aux).prox; } (*aux).prox = criarNovoElemento(); } } mostrar(struct Lista **a){ if (*a == NULL){ printf("\n....Cadastro vazio....\n"); } else{ struct Lista *aux; aux = *a; while( aux != NULL){ printf("\nAtual..: %i", (*aux).num); aux = (*aux).prox; } } printf("\n"); system("pause"); } localizar (struct Lista **a){ if (*a == NULL){ printf("\n....Cadastro vazio....\n"); } else{ int num = 0; int achei = 0; int cont = 0; printf("Informe o numero: "); scanf("%i", &num); struct Lista *aux; aux = *a; while( aux != NULL && achei == 0){ cont += 1; if ((*aux).num == num){ achei = 1; } aux = (*aux).prox; } if (achei == 1){ printf("\n.....Achei na posicao: %i.....\n", cont); } else{ printf("\n.....Nao Achei....\n"); } } printf("\n"); system("pause"); } excluir(struct Lista **a){ if (*a== NULL){ // verificar se existe algum elemento na lista printf("\n....Cadastro vazio....\n"); } else{ struct Lista *aux =*a; a= (**a).prox; free(aux); } printf("\n"); system("pause"); } main (){ struct Lista *inicio = NULL; int opcao = 0; while(opcao != 9){ system ("cls"); printf("\n[1] Inserir Elemento"); printf("\n[2] Mostrar Elemento"); printf("\n[3] Localizar Elemento"); printf("\n[4] Excluir "); printf("\n[9] Finalizar"); printf("\nInforme a opcao: "); scanf("%i", &opcao); switch(opcao){ case 1 : inserir(&inicio); break; case 2 : mostrar(&inicio); break; case 3 : localizar(&inicio); break; case 4 : excluir(&inicio); break; case 9 : printf("Programa finalizado"); } } }  
    • Por marcos_paulo0o
      Eae Galera!
       
      Estou com um problema em um trabalho da faculdade, e gostaria que vcs me dessem uma ajudinha.
      O trabalho é o seguinte: Desenvolvar um programa em c que consiga registrar , alterar, excluir,  e consultar os dados, mas depois de ter feito o código, eu não consigo encontrar o erro que o compilador estar acusando.
      Eu sou novo na linguagem c e peço que se possível me falem qual é esse erro para que eu possa consertar.
      Agradeço desde já!
       
      PROGRAMA:
       
      #include <stdio.h>
      #include <stdlib.h>
      struct cliente
      {
          char nome[30];
          int cod;
          char ender[30];
          int quant;
          float valor;
      };
       void incluir()
      {
          cliente incluir[1];
          
          for (int i = 0 ; i < 2 ; i++)
          {
              printf("NOME: \n");
              fflush(stdin);
              scanf("%s", &cliente.nome);
              
              printf("CODIGO: \n");
              fflush(stdin);
              scanf("%i", &cliente.cod);
              
              printf("ENDERECO: \n");
              fflush(stdin);
              scanf("%s", &cliente.ender);
              
              printf("QUANTIDADE: \n");
              fflush(stdin);
              scanf("%i", &cliente.quant);
              
              printf("VALOR: \n");
              scanf("%f", &cliente.valor);
          }
      }
      void listar()
      {
          int i, aux;
           
           for(i = 0;i < aux; i++)
           {
                 printf(" ARQUIVO %d\n",(i+1));
                 printf(" CODIGO: %i",cliente.cod);
                 printf(" NOME: %s",cliente.nome);
                 printf(" ENDERECO: %s",cliente.ender);           
                 printf(" QUANTIDADE: %i",cliente.quant);
                 printf(" VALOR: %f",cliente.valor);
                 printf("\n\n");
           }
             }
      void editar()
      {
          int cod, i;
         printf("\n CODIGO: ");
         scanf("%i", &cod);
         printf("\n INFORME OS NOVOS DADOS:\n\n ");
         printf("\n NOME: ");
         scanf("%s", &cliente.nome);
         printf("\n CODIGO: ");
         scanf("%i", &cliente.cod);
         
         printf("\n ENDERECO: ");
         scanf("%s", &cliente.ender);
         printf("\n QUANTIDADE: ");
         scanf("%i", &cliente.quant);
         printf("\n VALOR: ");
         scanf("%f", &cliente.valor);
         
         printf("DADOS ALTERADOS COM SUCESSO!");
      }
      void excluir()
      {
      int cod;
         printf("\n CODIGO: ");
         scanf("%i", cod);
         cliente.cod = "";
         cliente.nome = "";
         cliente.ender = "";
         cliente.quant = "";
         cliente.valor = "";
         printf("DADOS APAGADOS COM SUCESSO!");
      }       
             
      main()
      {
      void incluir();
      void listar();
      void editar();
      int op = 0, aux = 0;
      do
      {
      op = menu();
      switch(op)
      {
      case 1: incluir();
      break;
      case 2: listar();
      break;
      case 3: editar();
      break;
      case 4: excluir();
      break;
      }
      }
      while(op != 0);
      system("pause");    
      }
       
    • Por gerson.v.avelino
      Não sou bom em programação, entendo pouquissímo. quero uma ajudinha de como começaria a resolver esse exercício:
       Escrever um programa (em C++) para o jogo de adivinhar uma palavra. Este jogo consiste no seguinte: o programa sorteia uma palavra e o jogador deve tentar adivinhar a palavra indicando as letras. Para isso o programa deve indicar se a palavra tem o não as letras e a posição das letras. O jogador pode indicar letras erradas só um numero limite de vezes.  O jogo termina quando ou jogador complete a palavra ou ultrapasse o limite de letras erradas.
       
      uma ajudinha! please! . mas, se tiverem resolvido! melhor ! rsrsrs...
       
    • Por llucaahenri
      Bom dia!
      Sou iniciante nessa área de programação, estou aprendendo sobre vetores e matrizes e gostaria de saber como faço para calcular elementos de um vetor e de uma matriz, eu tentei fazer usando laço For, mas não consegui.
      Esse exercício que estou tentando fazer.  
      Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes a duas posições no vetor. Ao final seu programa deverá escrever a soma dos valores encontrados nas respectivas posições X e Y.
      Meu código!
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() {     setlocale(LC_ALL, "Portuguese");     int VetorX[12], VetorY[12];     int Result, X, Y, i, j;     for(i = 1; i < 13; i++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor X. \n", i);         scanf("%d", &X);     }     for(i = 1; j < 13; j++){ // Ler os Valores;         printf("[%d] Digite um número do Vetor Y. \n", j);         scanf("%d", &Y);     }         for(i = 0; i < 13; i++){             Result =+ VetorX;             printf("O resultado é%d", Result);         }     return 0; }
       
    • Por arcsaraiva
      Olá, estou iniciando em c++ e estou tentando ajustar um código que não está rodando como deveria. Tenho uma função com os seguintes comandos:
      bool padrao[20]; int contador = 0; padrao[0] = padrao[1] = padrao[5]= padrao[13] = 1; //ou esta linha não funciona if (padrao[contador] != 1){ //ou esta, pois o resultado cout << "dentro if" << contador << endl; contador++; } else { cout << "no else" << contador << endl; contador++; } Reparem que eu preciso do array com 20 índices, porém só os declarados são usados. Ao executar este código, dentro if aparece nos índices 0,1, 2, 5, 8, 9, 10,13,16,... e o no else nos índices 3,4,6,7,11,12,14,15, ... Poderiam me auxiliar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.