- Realme GT Master Edition - mestermunka
- Milyen okostelefont vegyek?
- One mobilszolgáltatások
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- iPhone topik
- Mobilhasználat külföldön
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Xiaomi 15 - kicsi telefon nagy energiával
- Azonnali mobilos kérdések órája
Új hozzászólás Aktív témák
-
FehérHolló
veterán
Nem tudom megnézni azóta sehol. Magamtól szerettem volna látni, mert úgy az igazi, de akkor most már inkább kérdezek.
Az eof flag akkor állítódik, amikor a beolvasott cucc után vége van a file-nak (de eof-et még nem olvasott be), vagy akkor, ha magát az eof-et olvasta be a file-ból?
A te mondandód alapján utóbbi az igaz, de én eddig az előbbit hittem. Most akkor mi a helyzet?
Remélem érted, amit kérdezni szeretnék.
[Szerkesztve] -
FehérHolló
veterán
Így már értem, hogy mit szeretnél kifejezni, köszi!
Nincs semmiféle rekurzió.
String egy saját stringosztály, aminek a megírása egy másik házi volt. Kiegészítettem néhány dologgal, ami kellett ehhez a feladathoz. Lényegében ugyanazt csinálja, mint a beépített string osztály (konverzió tekintetében is), de ennek tudom a pontos felépítését, így inkább ezt használtam fel újra.
[Szerkesztve] -
FehérHolló
veterán
Szerintem meg úgy van, hogy:
1. file megnyit
3. megnyitás ellenőriz
2. eof ellenőriz
3. olvas
4. eof ellenőriz
5. olvas
...
Az a String::restore(ifstream&) hívása. De a restore-okkal nincs gond, mert ha többet kell restore-olni egymás után, akkor nem kerül egyikbe sem hülyeség. Csak mint mondtam, a végén ráolvas mégegyszer, amikor már EOF volt.
[Szerkesztve] -
FehérHolló
veterán
Már igazából tök mindegy, mert elfogadták a házit, csak engem piszkál a dolog:
Adott ez a kódrészlet, biztos, hogy ebben van a hiba:
ifstream if2(costfile,ios::binary | ios::in);
if(if2){
while(!if2.eof()){
tmpc.restore(if2);
C.insert(C.size(),tmpc);
}
if2.close();
}
Ez eggyel többször olvas be, mint kellene. Tehát EOF után még beolvassa a semmit, és nem nagyon értem, hogy miért. Biztos tök egyszerű a válasz, csak én vagyok a buta.
a restore(ifstream&) tagfüggvény így néz ki:
void restore(ifstream& f){
String tmpstr;
f.read((char*) &costumer_id,sizeof(unsigned));
tmpstr.restore(f);
f.read((char*) &to_pay,sizeof(unsigned));
f.read((char*) &paid,sizeof(unsigned));
f.read((char*) &item_out,sizeof(unsigned));
this->set_name(tmpstr);
}
[Szerkesztve] -
FehérHolló
veterán
Erről rögtön levágta volna a gyakvezér, hogy nem én csináltam.
Két sima time()-al megoldottam a problémát.
Köszi szépen a segítséget! Ezt elrakom későbbre emésztgetni (2 órát aludtam, és most nem jön össze semmi...).
Csak eléggé rámijesztettek, amikor elkezdtek mellettem 300soros időkezelésről beszélgetni a többiek.
A union nem struktúra.
[Szerkesztve] -
FehérHolló
veterán
Itt is feltenném a kérdést.
Ennek a második bekezdésében van leírva: [link]
A kivételi és visszahozatali időt time()-al tárolnám, majd ctime()-al hasonlítanám őket.
[Szerkesztve] -
FehérHolló
veterán
Tudtommal ha nullpointerre hívod meg a delete-et vagy a delete[]-t, akkor nem csinál semmit. Rosszul gondolom ezek szerint? Órai anyagban, és netes forrásokban is mindenhol ezt írják, hogy nem csinál semmit. Sőt, a tapasztalat is ezt mutatja, amikor másolókonstruktorban felhasználom az operátor egyenlőt, és előtte törlöm, ami ott volt.
-
FehérHolló
veterán
válasz
norbiphu #102 üzenetére
Kicímzel a tömbből a '\0' berakásánál. A legnagyobb index strlen(z).
Másrészt ezzel egy nagyobb baj is van. Ha z alapból nem nullterminált, akkor nem működik rá a strlen() függvény. Ha pedig z nullterminált, akkor szükségtelen a t végére berakni egy '\0'-t.
A harmadik gond pedig a main()-en belül az A objektum inicializálásánál van. A () zárójelbe nem két ''-t (shift+1) kell rakni, hanem egy ''-t (shift+2). De ha így adod be neki a stringet, akkor zárd le '\0'-al, és nem lesz baja a konstruktornak sem. (A két első hibát kiküszöbölöd.)
Szerk: Jé, most látom, hogy két shift+1 egymás mellett ugyanúgy néz ki, mint a shift+2, ha code blokkba rakom.
[Szerkesztve] -
FehérHolló
veterán
Bocs, most látom, hogy közben szerkesztetted az előzőt.
A destruktor jó, valamit közben szúrtál el. A két legvalószínűbb dolog a te esetedben, ami heap corruptiont okozhat:
- valahol közben már kitörölted a tort tömböt, a destruktor is törölni szeretné és ez nem tetszik az oprendszernek
- zárójeles a new, delete pedig zárójel nélküli (ez az esetedben fenn áll) -
FehérHolló
veterán
Ha Visual Studioban programozik (amiben elvileg kötelező lenne BME-s létére - a világ legnagyobb baromsága), akkor emlékeim szerint fordítási hibát kap, de figyelmeztetést biztosan.
Nem ártana egy pontos hibaüzenet.
Szerk: Neked van igazad, ''elszáll a progim'' - tehát futási idejű hiba (=lefordul).
Szerk 2: Tömbös megoldás a javallott a feladatához, onnét gondolom, hogy tömb kell neki.
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- sziku69: Fűzzük össze a szavakat :)
- Milyen videókártyát?
- WoW avagy World of Warcraft -=MMORPG=-
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- OLED monitor topik
- Béta iOS-t használók topikja
- Autós topik
- Előrendelhető a OnePlus Pad 3
- Kevesebb dolgozó kell az Amazonnak, AI veszi át a rutinfeladatokat
- További aktív témák...
- Keresem : Lenovo Legion 5 16IRX9 83DG0037HV
- Intel X540-T2 dual-port 10GbE RJ45 hálózati vezérlő (10Gbit, 2 port, áfás számla, garancia)
- Lenovo ThinkPad X270 (16) - i5-7300U, 16GB, 512GB SSD, 12" FULL HD
- DELL PowerEdge R730xd 12LFF+2SFF rack szerver - 2xE5-2680v3,64GB RAM,4x1GbE,H730 RAID v ZFS
- AKCIÓ! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged