Na egy oriasi problemam lenne.
Nemtok normalisan megirni egy Makefile-t es nem tudom, hogy mit, es hol csesztem el.
Ez egy kicsit hosszu ide leirni, de ha valakinek lenne egy szabad 5 perce, akkor megnezne?
(atkuldenem neki levelben az egesz programot)
Nem nagy progi vegulis.
Eleg fontos lenne....
Ha jól dereng, éppen minap kérdeztél rá, hogy mire jó ez a
#define VALAMI
definiált érték nélkül. Például erre. Ha a DEBUG szerepelt egy ilyen #define sorral, az #ifdef utáni lesz a while ciklus feltétele, egyébként ez #else utáni.
do {
Res = waitpid(-1,NULL,WNOHANG);
sleep(1);
} while(Res <= 0);
return 0;
}
Na ezzel van problemam.
Mivelhogy ennyi az egesz bot lenyegeben.
Tehat ami itt nem vilagos:
#endif utan miert van 2 {} kozott egy resz?
Meg ezt a waitpid-es reszt se ertem.
utanaolvastam a neten, de bevallom oszinten az nekem magas volt.
Szal nem fogtam fel(reszben azert mert angol volt).
En ebbol az egezsbol ennyit sutottem ki:
Kapcsolodik egy szerverre. Es ennyi.
Meg vegulis ez nem is egy ciklus.
Tehat ami magyarazatra szorul:
Egyszer kapcsolodik-e, vagy ha leszakadt, akkor ujra kapcsolodik?
Mert nem latom a ciklust.
Meg a waitpis resz nem vilagos meg...;)
Kosz.
Kelleni nem, kell, csak illik.
A main az oprencer felé tér vissza értékkel, ami int kell legyen. Általnosan elfogadott, hogy 0-val tér vissza sikeres befejeződés esetén, nem 0-val, ha valamilyen speciális okból szakadt meg a progi futása (ezért szokott pl sikertelen malloc lekezelésekor egy exit(1) a befelyeztetés módja, mert az 1 != 0). Ezt az értéket DOS alatt felhasználhatod pl az autoexec.bat -ban mint errorlevel, vagy valami hasonló, Linux alatt meg elég sokféle módon.
Üdv: Ego
PS: Úgy rémlik, hogy az ANSI már nem is szereti a void-os main-t.
Adjál át egy tetszőleges méretű 2 dimenziós tömböt paraméterként egy fügvénynek (a 2 méret is paraméterként megy, azaz előre egyik sem ismert). Ennek egyik (talán leggyakrababan alkalmazott) megolása is mutatózgatással történik.
Nincs időm hosszú magyarázatra, ezért rövid leszek:
A mutatók használatának egyik oka:
A C-ben a paraméterátadás értékszerinti. Ezért egy fügvény nem tudja megváltoztatni az aktuális paraméter értékét. Erre viszont soxor szükség van. Ekkor rákényszerülsz a mutatók használatára. A te könyvedben is biztos benne van a csere (vagy swap) fügvény példája. Azt nézd meg.
Hmmm... sejtem, hogy még nem írtál olyan programot, amelyben dinamikus memóriafoglalásra volt szükséged. Pointerek nélkül ez nem (sem) menne.
Hogy mondjak egy tipikus példát, írnod kell egy programot, és ennek része egy teljes bináris fájl (pl. kép) memóriába olvasása. Ha változót deklarálsz, pl. így
unsigned char keptarolo[100000];
biztos lehetsz benne, hogy 1000005 bájtos képet fognak vele kezelni. Ha 100005-re veszed, akkor majd a 10006 bájtossal lesz gond. Ilyenkor lehet azt csinálni, hogy
Peldaul van amikor azt kell hasznalni es kesz, lasd pl int main (int argc, char **argv).
Itt argv egy tombre mutat, melynek elemei stringre mutato pointerek.
argv - char **
argv[0] - char *
argv[0][0] - char
"Amit úgy konkréten nehezen tudok fölfogni, azok a pointerek (*) és a címe (&). (ha jól írtam a nevüket meg őket magukat)"
Ebben sokat segíteni nem nagyon lehet, legfeljebb a könyveket ismételgetni: a pointer tkp. ua., mint a változó, csak máshogy néz ki. Mindenesetre amíg ezt a részt nem érted tökletesen, ne menj az egyszerű mintaprogramoknál tovább! C = mutató mutató hátán.
Remelem valaki kisegit:
#ifndef __TOLLBOT_INTERFACE_H__
#define __TOLLBOT_INTERFACE_H__
#endif
Ezt ha valaki nekem kifejtene?
Az a kerdes, hogy a #define es az #endif kozott van-e valami!
1) Ha nincs, akkor egyszeruen csak el akarta kerulni a "symbol redefined" warningot.
2) Ha van, akkor ez egy header-fileban fordulhat elo (TOLLBOT.H), es a tobbszoros beillesztes (#include) okozta tobbszoros definicio ellen vedi meg a #define es az #endif kozotti reszeket
PS: azon ne aggodj, hogy a definialt szimbolumnak nincs erteke, nem kotelezo, hogy legyen.
Egyébként már nagyából értem a C szintaktikáját, nem a C-s gondolkodás móddal van már annyira a gond, hanem azzal, hogy a tényleges lehetőségeimet nem ismerem, amiket nyujt.
Amit úgy konkréten nehezen tudok fölfogni, azok a pointerek (*) és a címe (&). (ha jól írtam a nevüket meg őket magukat)
Nem azzal van a gond, hogy Cygwin-en nincs XFree.
Tudom, hogy van. Azzal van a gond, hogy fölraktam Cygwin-re, de aztán sem az Mplayer (egyébként úgy portolták Cygwin-re a fejlesztői, hogy gyakorlatilag használhatatlan volt) sem egyéb programoknak a configure szkriptje nem ismeri föl. Próbálkoztam megkeresni a ./configure-ban azt a metódust, ahogy felismeri, de nem találtam.
Nem egy X írásába akarok belefogni!!!
(azért hülye nem vagyok... :)
HA jól tudom, ez nem kell, mivel van valami HTML környezet, ami nem szedi ki az ilyen dolgoka. Csak a neve nem jut eszembe. Aki tudja, írja már le, mert elég sokat inkludolgatunk ide is.
Egy nagyon fontos dolgot elfelejtettem: adatszerkezetek.
Tisztába kell jönni mibenlétükkel, és C-beli megvalósításukkal. Enélkül nem lehet programozni. Erröl nem tudok irodalmat, nekem egyetemen tanították (egész jól).
így első programozói feladatok között szerepelhet:
verem, sor, keresőfa, egy- és kétirányba láncolt lista megvalósítása, cirkuláris lista, és ha nagyon tudsz már, akkor mondjuk egy B vagy B+-fa (nekem az utolsó kettőre eddig nem volt türelmem). Ezek azért is jók, mert programozni is tanulsz velük rendesen, meg elég sokat kell mutatózni, ami a C-ben megkerülhetetlen.
És még egy cím, ami 2 dolog miatt sem biztos, hogy jó: www.prog.hu
Egyrészt most valamiért nem érem el, másrészt nem nagyon nézegettem a kezdő szintű C-s dolgokat, de amit láttam, az űgy emlékszem jó volt. És talán adatszerk dolgokat is találsz itt (bár ez se biztos). Na mind1. Nézd meg.