Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivos C++


leolure

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...