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

(Resolvido) Como não sobrepor arquivo c/c++


AndréL.

Pergunta

tenho uma função na qual preciso adicionar dados a um arquivo sem sobrepor os dados já existentes no arquivo.

e mais ou menos assim: eu abro o arquivo leio os dados existentes e insiro os novos dados no fim da arquivo

void Cont()
{
     int num,x=10,cont=0;

     ifstream in("Numeros.txt");
     //ofstream out("Numeros.txt");

     while(!in.eof()){
                      if(!in){
                              cout<<"\n\Erro Ao Ler o Arquivo\n\t";
                              system("pause");
                              exit(1);
                              }
                      in>>num;
                     }

    while(num!=0{
                          cin>>num;
                          }
   in.close();


}

Editado por Durub
Adicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá!

Ifstream serve apenas para leitura. Já ofstream apenas escrita.

Para fazer o que você quer, use fstream pois ele serve para ambas operações.

Para saber mais, veja esse link:

http://www.cplusplus.com/doc/tutorial/files/

Se não conseguir avise!

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

  • 0

Só complementando a resposta do Marcelo, ao usar o ofstream por exemplo para escrever, para que você não sobrescreva o conteúdo do arquivo, basta que ao abri-lo, você faça o seguinte:

ofstream Teste ("teste.txt", ios::app);

.

Att.,

Pedro.

Link para o comentário
Compartilhar em outros sites

  • 0

Às ordens. Só para que você fique um pouco mais informado, o que fiz foi usar uma "flag" ao abrir o arquivo.

Podemos usar várias delas ao mesmo tempo, por exemplo:

fstream Teste ("teste.txt", ios::out | ios::in | ios::app | ios::trunc) // ios::out para abrir o arquivo para escrita;
                                                               ios::in para abrir o arquivo para leitura;
                                                               ios::app para começar a escrita no fim do arquivo;
                                                               ios::trunc para sobrescrever o conteúdo se o arquivo criado já existe;
                                                Obs.: Para separarmos as "flags" utilizamos a 'barra vertical', que no padrão brasileiro é "shift + \".

E só mais uma coisa, é de bom costume "ler" alguma coisa do arquivo antes de usar a função "eof". Do contrário ele poderá retornar algum falso verdadeiro. Além disso, penso que o ".eof" não é o que você queria pois ele não indica que o que você está tentando ler é o fim do arquivo, o que ele irá indicar, caso ele retorne 'true' é que você tentou ler algo além do fim do arquivo.

Att.,

Pedro.

Editado por PedroCunha
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...