Kezdőoldal » Számítástechnika » Programozás » Hogyan állítsam elő a játékban...

Hogyan állítsam elő a játékban eltelt időt?

Figyelt kérdés

ANSI C nyelven írok játékot.

Már kész van az egész, de képesnek kell lennie a játék közben eltelt percek számát kiírni, miután vége a játéknak.

Tudom, hogy a time.h fejfájlt be kell kapcsolni, és hogy a time(time_t *pt) függvényt kell használni, ami long típusban adja vissza az 1970 óta eltelt másodperceket, ezzel meg is tudnám oldani a dolgot.

Úgy tudom, hogy ha nem NULL pointert írok a függvény paraméteréhez, akkor annak a pointernek átadja a visszaadott érték címét.

Meg is csináltam ezt a time_t típusú pointert, meghívtam vele a függvényt, majd a futás kezdetekor közli, hogy pointer nincs inicializálva.

Folyamatosan kaptam efféle, figyelmetlenségből adódó hibaüzenetet, de egy pillanat alatt megtaláltam a hibát és ki is tudtam javítani.

Most viszont ötletem sincs, hogyan kellene megoldani ezt a problémát, kérlek, segítsetek.

Előre is köszi



2015. márc. 26. 18:41
 1/6 iostream ***** válasza:

1. Miért akarsz neki átadni nem 0 paramétert? Ugyanazt írja bele, mint amit visszaad.

2. Csak úgy létrehoztál egy pointert, és átadtad? Neki nincs hatalma azt a pointert átírni, csak az általa mutatott területet. Akkor tudná a pointert módosítani, ha **-ot venne át, azaz a pointerre mutató pointert.


Tehát ha te ezt írod:


time_t* ptr;

time(ptr);


és a time így néz ki

time_t time(time_t* ptr)

{

time_t result = /* előállítjuk a resultot */;

if (ptr) *ptr = result;

return result;

}


Na most ha te átadsz neki egy inicializálatlan pointert, ez jobb esetben azonnali crasht fog okozni.

2015. márc. 26. 19:18
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Azért nem teszem változóba a függvény visszatérési értékét, mert képtelen belerakni adatvesztés nélkül.

time_t típusból konvertál longba.

Legalábbis a VS ezt írja.

Köszi

2015. márc. 26. 19:21
 3/6 anonim ***** válasza:

A time_t szimpla typedef:


time_t time = 0;

long long a = time;

__int64 b = time; (__int64 ez külön a VS -ben lévő típus)

2015. márc. 26. 19:48
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Sikerült már megoldani, de új probléma merült fel.

Ugye az eltelt időt úgy számolom ki, hogy az elején bekérem egy változóba, majd a végén is, végül a kettőt kivonom egymásból.


Rendre 0 és 3 közötti eredmények jönnek ki, akkor is, ha két percig játszom.

2015. márc. 26. 19:55
 5/6 anonim ***** válasza:
Akkor valamit rosszul írtál meg.
2015. márc. 26. 20:13
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

"képtelen belerakni adatvesztés nélkül"


Hozz létre egy változót time_t típussal és rakd bele. Miért lenne itt adatvesztés? Add át a változó pointerét paraméterként vagy rendeld hozzá simán a visszatérési értékét tökmindegy melyik. Ha adatvesztésed van rossz típust használsz.

2015. márc. 26. 20:30
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!