Hogy tudok úgy file-ba írni, hogy az ne íródjon felül mindíg?
pl 50 darab számot akarok írni egy file-ba
for ( int i = 0; i < 50; i++){
V_szamok[i] = rand()%4+1;
fout.open( "szoveg.txt",ofstream::app );
fout << V_szamok[i] << " ";
}
eddig ilyenem van de mindíg csak 1 szám marad benne. köszi a választ (az értelmeset leginkább)
A ciklus előtt kéne megnyitni a fájlt, utána meg lezárni sem ártana.
G.
Verzió 1:
Kiolvasod a tartalmát és memóriában hozzáadod amit akarsz, majd az egészet vissza írod felülírással.
Verzió 2:
"a" típussal nyitod meg a fájlt ami alapból hozzáfűzést csinál.
Nincs 2. verzió.
Orbitális baromság egy ciklusban 50szer megnyitni egy fájlt...
Gondolkodjatok már mielőtt hülye tanácsot osztogattok.
Azert irodik ki az elso szam csak, mert a masodik lefutasnal mar meg van nyitval, igy felrobban az egesz.
Windows alatt a hibakod erre hivatkozik:
"ERROR_ALREADY_EXISTS
183 (0xB7)
Cannot create a file when that file already exists."
Nyisd meg a for ciklus elott, es "jo" lesz. Manualisan bezarni pedig teljesen ertelmetlen a fuggveny vegen, annak ellenere, hogy javasoltak.
Minden bizonnyal én következtetek rosszul, de a Delphi fájlkezelője és a C# StreamReader-e bezárás nélkül bele se írja az utolsó puffertartalmat a fájlba...
G.
De egyebkent valahogy igy nez ki az egesz:
std::array<int, 50> tomb;
for (auto& i : tomb) { i = RandomNumber(1, 4); }
std::ofstream ost{"test.txt", std::ofstream::app};
if (!ost) { std::cerr << "hiba tortent a fajl megnyitasakor\n"; return 1; }
std::copy(tomb.begin(), tomb.end(), std::ostream_iterator<decltype(tomb)::value_type>{ost, "\n"});
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!