Vegre egy hirdetes, amely kiemelkedik a szokasos szurkesegbol :D
Arra egyebkent meg nem jottem ra, hogy Mickey Mouse hogy jon a kepbe, de aki igen, ossza meg velem :D
- bviktor blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
kulcsszavak: Disney, LucasArts
- A hozzászóláshoz be kell jelentkezni
Jaj, tenyleg lol.
- A hozzászóláshoz be kell jelentkezni
Hol kell jelentkezni?
- A hozzászóláshoz be kell jelentkezni
Azt nem mondom meg, mert trey mar felti a penzecskejet.
Állást hirdeti a HUP-on az engedélyemmel lehet. A link el lett távolítva a blogbejegyzésből. Ha visszakerül, törlöm az egészet és a regisztrációdat is. Ezúttal végleg.
- A hozzászóláshoz be kell jelentkezni
uh
- A hozzászóláshoz be kell jelentkezni
Variaciok egy temara:
http://i.imgur.com/mJGaTwB.jpg
Ugy tunik, utolag rajottek, hogy nem tul stilusos C++ hirdetest C koddal eloadni lol.
- A hozzászóláshoz be kell jelentkezni
Jol latom, es a C kodban van egy jo kis stack-overflow lehetoseg?
- A hozzászóláshoz be kell jelentkezni
Mire gondolsz? Hogy %c helyett %s-t hasznal?
- A hozzászóláshoz be kell jelentkezni
Hogy inicializal egy pointervaltozot, ami a "n" sztringre mutat. Majd erre a (ha jol tudom veremben lefoglalt) memoriateruletre scanf-fel az STDIN-rol beolvas a felhasznalotol egy sztringet, ami optimalis esetben ugye "y" vagy "n", e mi van akkor, ha e helyett az van benne, hogy "a ghsdj gsfgjh dkfghshfgls hlghsljhgshlfgsld fgs" (es igy tovabb). Ez szerintem felulirja vermet, es ide azert lehet rakni fentinel "hasznosabb" adatot is.
- A hozzászóláshoz be kell jelentkezni
Akkor (asszem) egyre gondolunk. Ha az emlekem nem csal, ha %c-t hasznalna, csak egy karaktert tudna beolvasni, tobb eseten elszallna a picsaba. De erre azert nem eskudnek meg.
- A hozzászóláshoz be kell jelentkezni
Azert az elszallna a pi-ba is erosen bug-szagu.
- A hozzászóláshoz be kell jelentkezni
Nem bug, egyszeruen nincs lekezelve a problema. Kb. olyan, mintha szamokat probalnal beolvasni, es string-et kapnal. Ha ott sincs ellenorizve a visszateresi ertek, ugyanugy meghal. Nem tudom pontosan, mi a neve az ilyen esetnek, de nem bug :)
- A hozzászóláshoz be kell jelentkezni
Nem úgy lenne értelmes, hogy %c esetén a többi karaktert eldobja? Bár megmondom őszintén sosem szerettem a C-nek az egész karakter-szöveg kezelését...
--
blogom
- A hozzászóláshoz be kell jelentkezni
Igazabol jobban belegondolva mar ott kezdodik a gond, hogy a char answer[]="n";
elore, implicite meghatarozza a tomb meretet 1-re (plusz zaro \0). Ettol fuggetlenul VS2012-ben egy par karaktert meg megenged tarolni benne (errol korabban is voltak emlekeim, valamiert nem koveteli meg a pontos meretegyezest), de lenyegesen tobb utan mar kiirja, hogy Access violation executing location 0x66666666
. Ha meg debug-ot forditok, van kedves, es mar 2 eseten is szol, hogy Stack around the variable 'ans' was corrupted
(%s es %c eseten is). Ha ez a "stack overflow", akkor Zahy talalt.
- A hozzászóláshoz be kell jelentkezni
VS...
--
blogom
- A hozzászóláshoz be kell jelentkezni
Érdekes, nálam %c esetén rohadtul nem ezt csinálja. Akkor az van (mellesleg fejből is ezt válaszoltam volna, azért leellenőriztem), hogy kiolvas az stdin bufferből egy karaktert és értékül adja a változónak. Ha a bufferben maradtak még karakterek, legközelebb ha scanf-et hívsz, akkor nem fog tőled beolvasni semmit, hanem olvassa a bufferben maradt karaktereket. Ugyanez van, ha a buffer tartalma nem felel meg a formátumstringnek, akkor a buffer nem kerül ürítésre. Ez gondolom azért jó, mert lehet scanf fákat építeni, cserébe figyelni kell a visszatérési értékre, hogy szükség esetén "kézzel" üríthesd a buffert.
Btw nem azért enged többet beolvasni, mert architektúra bitszámához igazítja a lefoglalt terület nagyságát (hogy is mondják ezt szépen)?
- A hozzászóláshoz be kell jelentkezni
Valoban, %c eseten az van, amit irtal. Valamit beneztem.
#include <stdio.h>
#include <cstdlib>
int main()
{
char ans[] = "n";
scanf ("%c", ans);
printf ("ans1: %s\n", ans);
scanf ("%c", ans);
printf ("ans2: %s\n", ans);
system ("PAUSE");
}
Ez rendben van. Ez nem:
#include <stdio.h>
#include <cstdlib>
int main()
{
char ans[] = "n";
scanf ("%s", ans);
printf ("ans1: %s\n", ans);
scanf ("%s", ans);
printf ("ans2: %s\n", ans);
system ("PAUSE");
}
Btw nem azért enged többet beolvasni, mert architektúra bitszámához igazítja a lefoglalt terület nagyságát (hogy is mondják ezt szépen)?
Nem tudom, de en nem latok benne raciot. Egy char az egy byte, nekem meg megette 8 karakterig. Miert kene egy char[2]-nek epp int64 meretunek lennie Win32 targeten? Szerintem egyszeruen valamifele engedekenysegrol van szo, mint mondtam, sokszor fordult mar ilyen elo, hogy tudtam, hogy ennek nem kene belefernie, de megis mukodott - altalaban. Ezert is volt nehez az ilyen bugokat kiszurni.
- A hozzászóláshoz be kell jelentkezni
Ohhbassz, hogy ez nem ugrott be...
--
blogom
- A hozzászóláshoz be kell jelentkezni
"Come_To_The_Dark_Side();"
Ez még akkor sem érdekelne, ha értenék a C++-hoz... :D
- A hozzászóláshoz be kell jelentkezni