Nuova versione:
codice:
#include <iostream>
#include <fstream>
using namespace std;

int main() {
int x;
int y;
fstream filei;
fstream fileo;

filei.open("in.txt");
if(!filei) {
cout << "Errore nella lettura del file provaf.txt";
return 1;
}

filei >> x >> y;
filei.close();

cout << x << " " << y << endl;

cout << "Scrivi i nuovi valori separati da spazio\n";
cin >> x >> y;

fileo.open("out.txt");
if(!fileo) {
cout << "Errore nella lettura del file provaf.txt";
return 1;
}

system("cp out.txt in.txt");

fileo << x << y;
fileo.close();

filei.open("in.txt");
if(!filei) {
cout << "Errore nella lettura del file provaf.txt";
return 1;
}

filei >> x >> y;
filei.close();

cout << x << " " << y << endl;

return 0;
}
Risultato:
872 -1081739660 <- e anche qui
Scrivi i nuovi valori separati da spazio
8 7
8 7

ale@ALE002:~/Desktop/Ale/C++/prova files$ ./provafiles -1208521863 -1077798380
Scrivi i nuovi valori separati da spazio
8 7
87 7 <- è qui che mi sembra strano
Il file in vale:
87

e out vale:
87

altra esecuzione:
[quore]
ale@ALE002:~/Desktop/Ale/C++/prova files$ ./provafiles
87 -1079680956
Scrivi i nuovi valori separati da spazio
9 10
87 10 <- ?????
[/quote]
in:
87
out:
910


grazie
popoxx

PS: io preferirei l'altra soluzione se funziona