Igazad van, ugyanis a newline-t is beleszamolja, tehat 5. A problema evvel meg az, hogy a Windows alatt meg lehet, hogy 6 lenne, mert ott ket karakterrlel zarul a sor. Ebbol kifolyolag en megtartanam a 4-et, de a kovetkezokepp tesztelnem:
if( strcspn(t," trn")==4 && ...
Igy a sorvegi space-ek es tabok sem kavarnanak be.
"a typedef illetve define al definiált tipus illetve állandokat minden .c ben külön irjam be ahol használom?" Jajj. Te, nem kéne elolvasnod mondjuk a "Tanuljuk meg a C nyelvet" könyvet először? Akkor már tudnád mi az az include fájl meg mit jelent az a sok hülye csillag...
Találtam egy (kis) hibát a progi(d)ban, azt kijavitva már müködik:)
Legalábbis nálam strlen(4) helyett strlen(5) kell mert az fgets mőgé tesz még valami ' '-t..
Akkor lenne még néhány primitiv kérdésem:)
a typedef illetve define al definiált tipus illetve állandokat minden .c ben külön irjam be ahol használom? Azaz pl typedef xyxy int et használom 1.c ben de 2.c ben is ugyanezt szeretném..
Ha a függvények argumentumában char *valtozo szerepel akkor ez egy karakter tömböt vár? Nekem néhol még sok a * pl az eval függvényedben:) azzal nem tudok mit kezdeni egyenlőre:) a decode fv ed nagyon tetszik..
"C parancsok" nincsenek. Vannak kulonbozo "fuggvenyek". Ez attol függ, hogy ilyen könyvtarakat hasznalsz. Van persze a standard könyvtar, amelyet mindne C forditoval együtt szallitanak, de ez csak a minimum.
Ha "C standard library"-ra rakeresel a Google-n, akkor az elsö talalat:
KoporShow: rájöttem, hogy lehet módosítani az email cimet szóval már kicseréltem egy jóra. Most fogom átnézni az általad küldött kódot, de első ránézésre a többi c flet is átfogom írni ennek hatására kicsit, hogy profibbnak látszodjon:). Van egy két sor elsőre amit nem értek még megprobálok utánanézni hátha rájövök, egyébként nem tudtok olyan oldalt ahol felvan sorolva az összes c parancs (gyorsan lehet keresni köztük) rövid leírással esetleg példával?
A levelet megkaptam:). Csak van a thuram@freemail.hu s cimem amire már nem tudok belépni kb 2-3 éve:), de onnan forwardolja a levelemet ahova már beis tudok lépni:)
Nem akarom csufítani a gdb s topikját NevemTeve-nek (eddig olyan szép:) úgyhogy inkább itt tenném fel a primitiv kérdésemet. A lent közölt kódon probáltam használni és valahogy a set -tel nem tudtam beállítani a getchar által kreált s értéket : probáltam set s='x' ill set s=x et de nem fogadta el, meg persze probáltam ; mögéjük rakni:) de nem lett jó sehogy az uhu linux manjában meg nincs róla semmi:(
Off (Hallottam olyan cégtől, ahol nagyon féltek a hard-kódolástól, inkább felvettek egy #define LT_ONE 1 definíciót, nyilván arra az esetre, ha a következő verzióban a "LT_ONE" azt kellene jelentse hogy "2", akkor könnyű legyen a módosítás)
Egyébként a program müködik és azt csinálja amit szeretnék a t tömb felvan töltve csak a kód nem ment át sztem:(..
Az Ascii kódokat nem tudom fejből, és azért használom azt mert azt kellene eldöntenem ott hogy 'a1d4' alakú karaktersorozat jöne be.. És mivel fogalmam sincs mi van az a betű elött ezért Ascii kódot adtam meg..
Szóval ez a programrész egyenlőre jól eltudja dönteni hogy l,load stb ill 'xyxy' beírás történte ahol x a-h ig ill y 1-8 ig megy..
1) az elso while cikuls lenyegesen tobb karaktert tud olvashat be mint a t tombod hossza, ez tulcsordulashoz vezthet.
2) Sose programozzuk azt ujra, amire letezik standard fuggveny. Peldaul az fgets hasznalata ebben az esetben adja magat. Alapvetoen tanacsos megadni a belolvasando karakterek max. szamat. A karakterosztalyok klasszifikalasara is vannak fugvenyek. Feldolgozashoz jo otlet az sscanf illetve a regularis kifejezesek hasznalata.
Szerintem eloszor magadnak kene megfogalmaznod, hogy pontosan mit is akarsz, mert szerintem itt kezdodnek a problemaid. Peldaul a t tombot fel sem toltotted, stb. Mindez abbol fakad, hogy nem gondoltad at, hogy pontosan mit es miert csinalsz. Ha mashogy nem megy, ird fel a strategiadat emberi szavakkal egy papirra, es csak ha teljesen biztos vagy a dolgokban, akkor kezdj neki a kodolasnak.
Egy mellekes technikai tanacs: semmi ertelme nincs a programkodban ASCII-kodokkal mint szamokkal dolgozni. Ez csak foloslegesen gusztustalanna teszi a prgramodat, meg akkor is ha fejbol ismered az osszes kodot.
Egy alapveto filozofia, amit sokan kovetnek es jonak tartanak: Az egyetlen numerikus konstans, ami egy programkod belsejeben elfogadhato: a 0. Minden masra celra hasznaljunk konstansot valtozot, vagy define-t, egy nevven amely tukrozi a konstans jelenteset.
Ami meg a switch-et illeti: igen, létrehozhatsz egy saját változót, amit az input alapján egy függvényében állítasz és a switch ez alapján ágazik el. De nem intet javasolok, hanem enum-ot. Olvashatóbb lesz tőle a kód.
Szeretném tovább fejleszteni adatok beolvasását eddig csak egész számokat beirva tud egy két dolgot csinálni (ráadásul ha nem jót kap végtelen ciklus:), azonban szeretném ha egyenlőre a következőket tudná:
d vagy display -> display () /megjenités n vagy new -> start () /új játék bár ez még kicsit erős:) l vagy load -> egy elmentett lépéssorozat betöltése fájlból s vagy save ... q vagy quit -> kilépés illetve a lépések bevitele d2-d4 stb
Na most ennek a beolvasását és megértését szeretném megirni. Nem tudom mi a szokásos eljárás, 2 dolog között gondolkozok getchar ill scanf. Amin még gondolkozok hogy például egy új egész bevezetésével elöször a beolvasás során az érzékelt karakterekhez hozzárdelnék egy egészt pl d vagy display => i=1; stb majd erre már lehetne használni a switchet. Esetleg van valami jobb javaslat?(
Lenne néhány strukturális kérdésem, hogy mit hogy,hova szokás elhelyezni, illetve lehet hogy valamit feleslegesen használok stb . Felteném a honlapomra a 3 db c filet ha valakinek lenne türelme válaszolni a kérdéseimre..
Egyébként most kisebb gondom támadt a programirásban megint két irány közül kellene választanom, még gondolkodok rajta ha nem jutok dülöre akkor felteszem a kérdést.(az egyik megvalósitás gyorsabbnak tünik nekem, de viszont talán nehezebb ellenörizni a helyességét,szivem szerint ezt választanám..). Egyébként már sikerült használnom a gdb t és kiis javitottam vele egy hibát:))