Jump to content
Fórum Script Brasil
  • 0

duvida para ler arquivo em txt


anderson__GO
 Share

Question

Galera estou com dificuldade em ler os dados de um txt, o enunciado diz o seguinte.

Implementar a função consulta voo() que deve permitir obter as informações do voo com base na digitação do numero de voo.

 

void consultarvoo(){

       arq = fopen("cadastro de voo.txt", "r");
        
        cout<<" entre com o numero de voo: ";
        cin>>num;
        
        while((fscanf(arq ,"%s", num)) != EOF )
        {
            
        cout<<endl;
                
        if (arq == NULL){
            cout<<" arquivo não existe! ";
        }
            
          string line;
          ifstream myfile ("cadastro de voo.txt"); // ifstream = padrão ios:in
          if (myfile.is_open())
          {
            while (! myfile.eof() ) //enquanto end of file for false continua
            {
              getline (myfile,line); // como foi aberto em modo texto(padrão)
                                     //e não binário(ios::bin) pega cada linha
              cout << line << endl;
            }
            myfile.close();
          }
        }
          //else cout << " Impossivel Abrir o Arquivo! "; 
                    
        system("pause");
    }

 

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

mais importante que mostrar seu código é mostrar o formato que terá seu arquivo txt. você está usando C ou C++? Porque vejo tudo misturado aí >_<.

Boa tarde amigo!

seguinte cara sei que ta uma bagunça esse cod pois sou iniciante em programação e c/c++, mais e o seguinte estou fazendo um trabalho na facu que pede o seguinte.

1. Fazer um programa em Linguagem C que criem uma estrutura de dados voo (struct voo) para a empresa VOEBEM, que servirá para implementar funções para controle da lista dos voos. A estrutura voo deve ser implementada de forma dinâmica e deve conter os seguintes dados:
 número do voo;
 data do voo;
 horário do voo;
 aeroporto de Saída;
 aeroporto de Chegada;
 rota;
 tempo estimado de voo;
 passageiros a bordo;


2. Implementar a função cadastrarVoo() que deve permitir o cadastro de um novo voo;
3. Implementar a função consultaVoo() que deve permitir obter as informações do voo com base na digitação do número do voo;
4. Implementar a função removeVoo() que permita a exclusão de um determinado voo.

já consegui salvar tudo no txt mais não estou conseguindo implementar a função consulta, se puder me ajudar ficarei muito agradecido.

OBS: estou usando c++.

 

 

mais importante que mostrar seu código é mostrar o formato que terá seu arquivo txt. você está usando C ou C++? Porque vejo tudo misturado aí >_<.

 

Link to comment
Share on other sites

  • 0

E por que você não sobe esse arquivo que você salvou para eu dar uma olhada junto com seu código.

 

1. Fazer um programa em Linguagem C que criem uma estrutura de dados voo (struct voo) para a empresa VOEBEM, que servirá para implementar funções para controle da lista dos voos. A estrutura voo deve ser implementada de forma dinâmica e deve conter os seguintes dados:
 número do voo;
 data do voo;
 horário do voo;
 aeroporto de Saída;
 aeroporto de Chegada;
 rota;
 tempo estimado de voo;
 passageiros a bordo;


2. Implementar a função cadastrarVoo() que deve permitir o cadastro de um novo voo;
3. Implementar a função consultaVoo() que deve permitir obter as informações do voo com base na digitação do número do voo;
4. Implementar a função removeVoo() que permita a exclusão de um determinado voo.

já consegui salvar tudo no txt mais não estou conseguindo implementar a função consulta, se puder me ajudar ficarei muito agradecido.

OBS: estou usando c++.

 

Segue o codigo.


#include <iostream>     // Inclusao das bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
#include <fstream>
#define SIZE 200
#include <iomanip>

using namespace std;

struct voo{                            // criação da estrutura struct voo
    char numero[3];                 // variavel numero[3] tipo inteira com 3 posições
    char data[10];                      // variavel data[10] tipo char com 10 posições
    char horario[5];                   // variavel horario[5] tipo char com 5 posições
    char tempo_voo[5];                    // varialvel tempo_voo[5] tipo char com 5 posições
    char aeroporto_saida[20];             // variavel aeroporto_saida[20] tipo char com 20 posições
    char aeroporto_chegada[20];              // variavel aeroporto_chegada[20] tipo char com 20 posições
    char rota [30];                           // varialvel rota[10] tipo char com 10 posições
    char passageiro_bordo[40];                // variavel passageiro_bordo[20] tipo char com 20 posições
};

void cadastrarvoo();    // Declaração global das funções
void consultarvoo();
void excluirvoo();
void menu();
void selecao();

    int i,num;
    FILE *arq;
    char buff[100];
    char *texto;
    FILE *arqLer;
    char str[100];

int main()                   // inicio da função principal
{   
    menu();
    system("pause");
    return 0;
}


void menu(){
    
    int menu;                    
                
        cout<<"\n                           ========================";
        cout<<"\n                              Bem Vindo a VOEBEM \n";  // printando na tela 
        cout<<"                           ========================\n\n";
        
        cout<<"\n =======================";
        cout<<"\n    Efetuar Cadastro:\n";            // printando na tela 
        cout<<" =======================\n\n";
        
        
        cout<<" 1-) Deseja Cadastrar Voo: "<<endl;
        cout<<" 2-) Deseja Consultar Voo: "<<endl;
        cout<<" 3-) Deseja Excluir Voo: "<<endl<<endl;
        selecao();
}
        
        void selecao(){
        
            int opcao;
            cout<<" Opcao: ";
            cin>>opcao;
            system("cls");
            
            switch(opcao){
              case 1:
                 {
                     cadastrarvoo();
                     menu();
                     break;
                 }        
            
              case 2:
                 {                
                    consultarvoo();
                    break;
                 }
                
              case 3:
                 {
                    excluirvoo();
                    break;
                 }
            }
        }


void cadastrarvoo(){
        
    int num;
    do{
        struct voo inform;            // Declaração da struct voo cad
        
            
        if ((arq = fopen("arquivo.txt", "w")) == NULL ) {
                cout<<" Arquivo não existe! "<<endl;
                system("pause");
                exit(1);
            }    
                    
            cout<<endl;
            cout<<" Numero do voo: ";                                // solicitanto o numero de voo
            fflush(stdin); 
            gets(inform.numero);                      
                        
            cout<<" Nome do Passageiro: ";                              // solicitando o nome do passageiro
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.passageiro_bordo);    
                                    
            cout<<" Data do Voo: ";                                    // solicitando a data
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.data);
                            
            cout<<" Horário do Voo: ";                                // solicitando o horário do voo
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.horario);
                    
            cout<<" Tempo Estimado do Voo: ";                        // solicitando o tempo do voo
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.tempo_voo);
            
            cout<<" Aeroporto de Saida: ";                            // solicitando o aeroporto de saida
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.aeroporto_saida);
                
            cout<<" Aeroporto de Chegada: ";                        // solicitando o aeroporto de chegada
            fflush(stdin);                                             // limpando o buffer do teclado
            gets(inform.aeroporto_chegada);
                    
            cout<<" Rota do Voo: ";                                    // solicitando a rota
            gets(inform.rota);                                        // alocando solicitação da rota
            
                
                fputs(inform.numero,arq);
                fputs("\n",arq);
                fputs(inform.passageiro_bordo,arq);
                fputs("\n",arq);
                fputs(inform.data,arq);
                fputs("\n",arq);
                fputs(inform.horario,arq);
                fputs("\n",arq);
                fputs(inform.tempo_voo,arq);
                fputs("\n",arq);
                fputs(inform.aeroporto_saida,arq);
                fputs("\n",arq);
                fputs(inform.aeroporto_chegada,arq);
                fputs("\n",arq);
                fputs(inform.rota,arq);
                fputs(" *\n\n",arq);  
                                    
            fclose(arq);                                            // fechando o arquivo
                    
            cout<<endl<<endl<<endl;
            
            cout<<" Deseja Cadastrar Novo Voo? "<<endl<<endl;
            cout<<" 1-) Cadastrar: "<<endl;
            cout<<" 0-) Voltar ao Menu: "<<endl<<endl;
            cout<<" Opcao: ";
            cin>>num;    
            system("cls");
                                        
    }     while(num!=0);
        system("cls");
}

void consultarvoo(void){
        
    struct voo inform;
            
     arq = fopen("arquivo.txt", "r");        // Abre o arquivo novamente para leitura
    
        if(arq == NULL) {                
               cout<<" Erro na abertura do arquivo"<<endl;
            system("pause");
            exit(1);
        }
        
        //=======================================================
    
        int consult;
        
        cout<<"Digite o numero do voo: ";
        cin>>consult;
        
                    
         if (strlen(consult, inform.numero) == 0){        // nessa parte do codigo que não consigo comparar a consulta com o numero do arquivo 
            printf("Numero não encontrado\n");                    
            printf("Tente Novamente");
            getch();
            system("cls");
            consultarvoo();
         }
            else  
        //==========================================================                 
                cout<<"\n-----------------------------";
                cout<<"\n Numero do Voo Encontrado\n\n";
                
                cout<<"\n Numero do Voo: %s ",inform.numero;
                cout<<"\n Passageiro a Bordo: %s ",inform.passageiro_bordo;
                cout<<"\n Data do Voo: %s", inform.data;
                cout<<"\n Horario do Voo: %s ", inform.horario;
                cout<<"\n Tempo de Voo: %s", inform.tempo_voo;
                cout<<"\n Aeroporto de Saida: %s", inform.aeroporto_saida;
                cout<<"\n Aeroporto de Chegada: %s", inform.aeroporto_chegada;
                cout<<"\n Rota do Voo: %s", inform.rota;
                getch();
                system("cls");
                menu();
                
                fclose(arq);
    } 

Edited by anderson__GO
Link to comment
Share on other sites

  • 0
#include <iostream>
#include <iomanip>      // std::setfill, std::setw
#include <fstream>
using namespace std;

struct Voo {                        
    string numero;                 
    string data;                  
    string horario;                
    string tempo_voo;              
    string aeroporto_saida;       
    string aeroporto_chegada;     
    string rota ;                 
    string passageiro_bordo;      
};

int menu();
void cadastrarvoo (string nomeArquivo); 
void consultarvoo (string nomeArquivo);
void excluirvoo   (string nomeArquivo);
void guardarDados (string nome, Voo voo);
bool lerDados     (string nomeArquivo, Voo &voo, ifstream &fin);
void mostrarDados( Voo &voo );

int main() { //Main
    string nomeArquivo = "reservas.txt";
    
    bool sair = false;
    while ( !sair ) {
        switch ( menu() ) {
            case 1: cadastrarvoo(nomeArquivo); break;
            case 2: consultarvoo(nomeArquivo); break;
            case 3: excluirvoo  (nomeArquivo); break;
            case 0: sair = true;               break;
            default:                           break;
        }
        system("cls");    
    }
    return 0;
}//End of main

int menu() {
    //system("MODE CON cols=75 lines=30");
    int margem = 27;
    int trace  = 24;
    cout << setfill(' ') << setw (margem)   << "" << setfill('=') << setw(trace) << "" << endl;
    cout << setfill(' ') << setw (margem+3) << "" << "Bem Vindo a VOEBEM"              << endl; 
    cout << setfill(' ') << setw (margem)   << "" << setfill('=') << setw(trace) << "" << endl;
    
    margem = 1;
    cout << setfill(' ') << setw (margem)   << "" << setfill('=') << setw(trace) << "" << endl;
    cout << setfill(' ') << setw (margem+4) << "" << "Efetuar Cadastro"               << endl; 
    cout << setfill(' ') << setw (margem)   << "" << setfill('=') << setw(trace) << "" << endl;

    cout << " 1-) Deseja Cadastrar Voo: " << endl;
    cout << " 2-) Deseja Consultar Voo: " << endl;
    cout << " 3-) Deseja Excluir Voo: "   << endl;
    cout << " 0-) Sair\n"                 << endl;
    int opcao;
    cout << " Opcao: ";
    cin >> opcao;
    cin.sync();
    return opcao;
}

void cadastrarvoo(string nomeArquivo) {
    
    Voo voo;
    cout<<endl;
    cout<<" Numero do voo: ";                   // solicitanto o numero de voo
    cin >> voo.numero; cin.sync();
    cout<<" Nome do Passageiro: ";              // solicitando o nome do passageiro
    cin >> voo.passageiro_bordo; cin.sync();
    cout<<" Data do Voo: ";                     // solicitando a data
    cin >> voo.data; cin.sync();            
    cout<<" Horário do Voo: ";                  // solicitando o horário do voo
    cin >> voo.horario; cin.sync();         
    cout<<" Tempo Estimado do Voo: ";           // solicitando o tempo do voo
    cin >> voo.tempo_voo; cin.sync();
    cout<<" Aeroporto de Saida: ";              // solicitando o aeroporto de saida
    cin >> voo.aeroporto_saida; cin.sync();
    cout<<" Aeroporto de Chegada: ";            // solicitando o aeroporto de chegada
    cin >> voo.aeroporto_chegada; cin.sync();
    cout<<" Rota do Voo: ";                      // solicitando a rota
    cin >> voo.rota; cin.sync();
    
    guardarDados(nomeArquivo, voo);
    system("cls");
    mostrarDados(voo);
    getchar();
}

void consultarvoo (string nomeArquivo) {
    cout << "informe o numero de voo: ";
    string numero;
    cin>>numero;
    cin.sync();
    
    
    Voo voo;
    ifstream fin ( nomeArquivo.c_str() );
    cout << endl;
    if ( !fin.is_open() ){
        cout << "Falho ao abrir arquivo" << endl;
        return;
    }
    
    system("cls");
    while  ( lerDados(nomeArquivo, voo, fin) ){
        if ( numero == voo.numero ){
            mostrarDados(voo);        
        }
    }
    
    getchar(); 
    fin.close();
}

void excluirvoo(string nomeArquivo){
    //POR FAZER AINDA
}

void guardarDados(string nomeArquivo, Voo voo){
    ofstream fout(nomeArquivo.c_str(), std::fstream::app );
    if ( !fout.is_open() ){
        cout << "Falho ao abrir arquivo" << endl;
        return;
    }
    fout<< voo.numero            << " "
        << voo.passageiro_bordo  << " "
        << voo.data              << " "
        << voo.horario           << " "
        << voo.tempo_voo         << " "
        << voo.aeroporto_saida   << " "
        << voo.aeroporto_chegada << " "
        << voo.rota              << endl; //<-salto de linha dentro do arquivo
    fout.close();
}

bool lerDados (string nomeArquivo, Voo &voo, ifstream &fin){
    fin >> voo.numero
        >> voo.passageiro_bordo
        >> voo.data
        >> voo.horario
        >> voo.tempo_voo
        >> voo.aeroporto_saida
        >> voo.aeroporto_chegada
    >> voo.rota;
    return fin.good();
}

void mostrarDados( Voo &voo ){
    cout << "Numero do voo:        " << voo.numero            << endl;
    cout << "Nome do Passageiro:   " << voo.passageiro_bordo  << endl;
    cout << "Data programada:      " << voo.data              << endl;
    cout << "Horario da viagem:    " << voo.horario           << endl;
    cout << "Tempo de Voo:         " << voo.tempo_voo         << endl;
    cout << "Aeroporto de saida:   " << voo.aeroporto_saida   << endl;
    cout << "Aeroporto de chegada: " << voo.aeroporto_chegada << endl;
    cout << "Rota do voo           " << voo.rota              << endl;
    cout << endl; 
}

 

 

 

 

 

Link to comment
Share on other sites

  • 0

Cara sem palavras quanto a seu conhecimento, fiquei até com vergonha do eu estava fazendo, é que sou iniciante ainda em c/c++, mais agradeço de coração pela sua boa vontade cara vlw mesmo. agora tenho que pesquisar estas funções que você utilizou para poder entender. Pois tem muita coisa ai que não vi na facu ainda, vou correr atras para poder fazer a parte que ainda falta EXCLUIR CADASTRO();

mais agradeço pela força e desculpa pela minha inexperiência.

Link to comment
Share on other sites

  • 0

não tem ciência... quando você precisar ler, guardar ou pesquisar, você cria um fstream (file stream), os streams de arquivo podem ser de 3 tipos, entrada(ifstream, ou input stream), saida(ofstream, ou output stream) ou fstream que serve para ambos. O primeiro parametro é o nome do arquivo, porem o nome deve ser um string de C, tipo char nome[100] = "arquivo.txt";, o segundo parâmetro são os flags que modificam o tipo de leitura do arquivo.

member constantstands foraccess
inentradaAbre o arquivo para litura: O buffer de stream interno suporta operaçoes de entrada.
outsaidaAbra o arquivo para escritura: O buffer de stream interno suporta operaçoes de saida. 
binarybinarioAs operações são realizadas em modo binário em vez de txt.
ateat endA posição de saída começa no fim do ficheiro.
appappendTodas as operações de saída de acontecem no final do arquivo, acrescentando aos seus conteúdos existentes.
trunctruncateQualquer conteúdo que existiam no arquivo antes que seja aberto são descartados. (Cuidado com esse!!!)

Se eu quero ler desde o arquivo eu crio um ponteiro tipo ifstream que é de entrada, ou seja a entrada se produzirá desde o arquivo en vez do teclado. então eu faço:
ifstream fin( "arquivo.txt" );

Com isso agora eu posso usar fin igual que cin, si com cin eu tivesse que ler um nome eu faço cin >> nome;, vamos supor que no arquivo tem uma só linha na qual tem um nome, "Gilberto" por exemplo., é só fazer fin >> nome; e agora "Gilberto" vai parar em nome que claramente deve ser um string ou char[].

É muito importante você fechar o arquivo rapidamente ao terminar de editar ou não se guarda as mudanças que você realiza. Recomendo abrir, ler um ou vários nomes e fechar, mais importante ainda si for no processo de escritura, pois si não fazer fout.close() o nome não aparecerá no arquivo por que não se salvou, tem claro que fout.close() é como quando você termina de editar um arquivo no notepad e tem que escolher salvar texto.

Si eu quiser escrever algo no arquivo eu crio um arquivo de saida, tipo ofstream fout, e posso abrir ele depois com fout.open("arquivo.txt");. Os nomes fout e fin são como cout e cin, porem cout é console output e cin é console input, então eu dou esses nomes fout e fin para parecer a cout e cin, fout é file output, e fin é file input, você pode dar o nome que você quiser, como entrada e saída. ;)

Agora vamos ver o ponteiro genérico, ele serve tanto para entrada como para saída, mas devemos indicar com os flags si queremos só para entrada, só para saída ou incluso para ambas coisas:

fstream arquivoIO( "arquivo.txt",  std::fstream::in | std::fstream::out ) ;

veja que  std::fstream::in e std::fstream::out estão separados pela barra '|' e não por virgula, todos os flagas vao separados por essa barra no segundo parâmetro do construtor. Vamos ver mais exemplos:

fstream arquivoIO( "arquivo.txt",  std::fstream::in ) ; // somente para saida
fstream arquivoIO( "arquivo.txt",  std::fstream::out ) ; // somente entrada
fstream arquivoIO( "arquivo.txt",  std::fstream::in | std::fstream::app ) ; //modo saída e o conteúdo se inserta no final, nunca borra o que já esta lá, só agrega.
fstream arquivoIO( "arquivo.txt",  std::fstream::out | std::fstream::trunc ) ; //borra tudo o que tiver lá no arquivo(sobrescreve)

A um ponteiro de saída eu também posso obrigar ele a que seja usado para entrada ou vice-versa:
ifstream fin( "arquivo.txt",std::fstream::out | std::fstream::app ); // posso ler e agregar conteúdo.

você deve saber que si eu uso certos flags o ponteiro começa em diferentes partes do arquivo, por exemplo si vou ler ou truncar, ele começa no inicio do arquivo, si eu vou usar app, ou at end ele começa no final do arquivo, pois queremos adicionar conteúdo, é como si eu quero escrever algo em uma folha usada, eu me dirijo ao final e lá começo escrever.¡, então sabendo isso você deve escolher o modo de abertura correto para usá-lo si não você não conseguirá ler ou escrever nada no arquivo.

O ultimo ponto a ser considerado é a tal função excluir. Em um arquivo você não pode excluir nada, você pode marcar essa linha como excluída mudando por exemplo o numero do voo a 000 por exemplo, isso quer dizer que o voo esta cancelado, si não a solução menos elegante porem a mais limpa é mudar tudo a um novo arquivo, cargando tudo na memoria, borrando o que você quer, eliminando o arquivo original e criando un novo no qual você volta a inserir os dados e volta a por nele o mesmo nome. Será esse o verdadeiro motivo do qual facebook não borra nossos dados realmente? >_<

Eu gosto de por um caractere adiante da linha a excluir, por exemplo '*', si eu ponho * adiante da linha quer dizer que esta "excluído", eu leio somente esse caracter e o comparo com '*' e si não é verdadero então posso ler o resto, si não está excluído mudo isso para um simples espaço, por algo se chama excluído e não borrado. >_<

 007 raul asd asd asd asd asd asd
*008 Gabriel asd asd asd asd asd asd
 007 Homer asd asd asd asd asd asd
*009 lucas asd asd asd asd asd asd
 010 mamon adsdas123 asdd asd addddd aa sss

Os que tem * são os excluídos.

Faça provas com isso que te comentei, si você está trabalhando com C++ use streams que é bem melhor que usar a estrutura FILE.

Sorte.

Para saber mais-> fstream

Edited by vangodp
Link to comment
Share on other sites

  • 0

não tem ciência... quando você precisar ler, guardar ou pesquisar, você cria um fstream (file stream), os streams de arquivo podem ser de 3 tipos, entrada(ifstream, ou input stream), saida(ofstream, ou output stream) ou fstream que serve para ambos. O primeiro parametro é o nome do arquivo, porem o nome deve ser um string de C, tipo char nome[100] = "arquivo.txt";, o segundo parâmetro são os flags que modificam o tipo de leitura do arquivo.

member constantstands foraccess
inentradaAbre o arquivo para litura: O buffer de stream interno suporta operaçoes de entrada.
outsaidaAbra o arquivo para escritura: O buffer de stream interno suporta operaçoes de saida. 
binarybinarioAs operações são realizadas em modo binário em vez de txt.
ateat endA posição de saída começa no fim do ficheiro.
appappendTodas as operações de saída de acontecem no final do arquivo, acrescentando aos seus conteúdos existentes.
trunctruncateQualquer conteúdo que existiam no arquivo antes que seja aberto são descartados. (Cuidado com esse!!!)

Se eu quero ler desde o arquivo eu crio um ponteiro tipo ifstream que é de entrada, ou seja a entrada se produzirá desde o arquivo en vez do teclado. então eu faço:
ifstream fin( "arquivo.txt" );

Com isso agora eu posso usar fin igual que cin, si com cin eu tivesse que ler um nome eu faço cin >> nome;, vamos supor que no arquivo tem uma só linha na qual tem um nome, "Gilberto" por exemplo., é só fazer fin >> nome; e agora "Gilberto" vai parar em nome que claramente deve ser um string ou char[].

É muito importante você fechar o arquivo rapidamente ao terminar de editar ou não se guarda as mudanças que você realiza. Recomendo abrir, ler um ou vários nomes e fechar, mais importante ainda si for no processo de escritura, pois si não fazer fout.close() o nome não aparecerá no arquivo por que não se salvou, tem claro que fout.close() é como quando você termina de editar um arquivo no notepad e tem que escolher salvar texto.

Si eu quiser escrever algo no arquivo eu crio um arquivo de saida, tipo ofstream fout, e posso abrir ele depois com fout.open("arquivo.txt");. Os nomes fout e fin são como cout e cin, porem cout é console output e cin é console input, então eu dou esses nomes fout e fin para parecer a cout e cin, fout é file output, e fin é file input, você pode dar o nome que você quiser, como entrada e saída. ;)

Agora vamos ver o ponteiro genérico, ele serve tanto para entrada como para saída, mas devemos indicar com os flags si queremos só para entrada, só para saída ou incluso para ambas coisas:

fstream arquivoIO( "arquivo.txt",  std::fstream::in | std::fstream::out ) ;

veja que  std::fstream::in e std::fstream::out estão separados pela barra '|' e não por virgula, todos os flagas vao separados por essa barra no segundo parâmetro do construtor. Vamos ver mais exemplos:

fstream arquivoIO( "arquivo.txt",  std::fstream::in ) ; // somente para saida
fstream arquivoIO( "arquivo.txt",  std::fstream::out ) ; // somente entrada
fstream arquivoIO( "arquivo.txt",  std::fstream::in | std::fstream::app ) ; //modo saída e o conteúdo se inserta no final, nunca borra o que já esta lá, só agrega.
fstream arquivoIO( "arquivo.txt",  std::fstream::out | std::fstream::trunc ) ; //borra tudo o que tiver lá no arquivo(sobrescreve)

A um ponteiro de saída eu também posso obrigar ele a que seja usado para entrada ou vice-versa:
ifstream fin( "arquivo.txt",std::fstream::out | std::fstream::app ); // posso ler e agregar conteúdo.

você deve saber que si eu uso certos flags o ponteiro começa em diferentes partes do arquivo, por exemplo si vou ler ou truncar, ele começa no inicio do arquivo, si eu vou usar app, ou at end ele começa no final do arquivo, pois queremos adicionar conteúdo, é como si eu quero escrever algo em uma folha usada, eu me dirijo ao final e lá começo escrever.¡, então sabendo isso você deve escolher o modo de abertura correto para usá-lo si não você não conseguirá ler ou escrever nada no arquivo.

O ultimo ponto a ser considerado é a tal função excluir. Em um arquivo você não pode excluir nada, você pode marcar essa linha como excluída mudando por exemplo o numero do voo a 000 por exemplo, isso quer dizer que o voo esta cancelado, si não a solução menos elegante porem a mais limpa é mudar tudo a um novo arquivo, cargando tudo na memoria, borrando o que você quer, eliminando o arquivo original e criando un novo no qual você volta a inserir os dados e volta a por nele o mesmo nome. Será esse o verdadeiro motivo do qual facebook não borra nossos dados realmente? >_<

Eu gosto de por um caractere adiante da linha a excluir, por exemplo '*', si eu ponho * adiante da linha quer dizer que esta "excluído", eu leio somente esse caracter e o comparo com '*' e si não é verdadero então posso ler o resto, si não está excluído mudo isso para um simples espaço, por algo se chama excluído e não borrado. >_<

 007 raul asd asd asd asd asd asd
*008 Gabriel asd asd asd asd asd asd
 007 Homer asd asd asd asd asd asd
*009 lucas asd asd asd asd asd asd
 010 mamon adsdas123 asdd asd addddd aa sss

Os que tem * são os excluídos.

Faça provas com isso que te comentei, si você está trabalhando com C++ use streams que é bem melhor que usar a estrutura FILE.

Sorte.

Para saber mais-> fstream

Cara mais uma vez muito obrigado por tudo vou seguir suas dicas.

grato por tudo, que deus lhe abençoe. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...