Jump to content
Fórum Script Brasil
  • 0

Arquivos C++


leolure
 Share

Question

Boa noite, estou fazendo um trabalho de Programação em c++ sobre arquivos, mas quando o programa vai ler o mesmo não aparece nada, e não encontro o erro! Poderiam me ajudar?

#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main(){
    
    ofstream fout("C:\\Users\\leand\\Desktop\\alunos.txt");
    
    const int MAX=10;
    int cont=1;
    char num, le[MAX];
        
    cout<< "Digite 20 numeros: \n";
    
    while(1){
    cout<<"Digite o "<<cont<<" numero: \n";
    cin>>num;
    fout<<num<<"\n";
    if(cont==5) break;    
    cont++;
    }
    
ifstream fin("C:\\Users\\leand\\Desktop\\alunos.txt");    
while(!fin.eof()){ // enquanto não for fim de arquivo
fin.getline(le,MAX);
cout << le << endl; // imprime linha no vídeo

    system("pause");
}

 

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

não há nada de mais no seu programa, simplesmente te recomendo que se for passar de usar um ponteiro de escritura a um de leitura, que tome por costume fechar o anterior ponteiro, assim você salva as mudanças no arquivo antes de começar a leitura

#include <iostream>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include <Lmcons.h>
#include <sstream>
using namespace std;

int main() {
    char username[UNLEN + 1];
    DWORD username_len = UNLEN + 1;
    GetUserName ( username, &username_len );
    
    stringstream ss; 
    ss << "C:\\Users\\" << username << "\\Desktop\\alunos.txt";

    ofstream fout ( ss.str().c_str(), ofstream::trunc );
    
    if( !fout.is_open() ){
        return 1;
    }
    
    const int MAX = 10;
    int cont = 1;
    char num, le[MAX];
    
    cout << "Digite 20 numeros: \n";
    
    while ( 1 ) {
        cout << "Digite o " << cont << " numero: ";
        cin >> num;
        fout << num << "\n";
        
        if ( cont == 5 ) break;
        
        cont++;
    }
    
    fout.close();
    
    ifstream fin ( ss.str().c_str() );
    
    while ( !fin.eof() ) { // enquanto não for fim de arquivo
        fin.getline ( le, MAX );
        cout << le << endl; // imprime linha no vídeo
    }
    
    
    fin.close();
    system ( "pause" );
}

si não prove usar en vez de 2 ponteiros 1 só(fstream), com ele você pode ler e escrever ao mesmo tempo, você simplesmente faça um rewind para que o ponteiro volte ao principio e possa fazer a leitura logo depois de escrever.

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.6k
    • Total Posts
      646.2k
×
×
  • Create New...