Elkezdtem írni egy programot, ami matematikai függvényeket is tartalmaz szép számmal. (cos, sin, pow, sqr, sqrt, stb.)
Beraktam hát a program elejére a math.h állomány beszúrására vonatkozó include parancsot, de nem akar lefordulni. A fordító hibajelzése szerint nem találja a különféle matematikai függvényeket.
A végén már a float.h fejlécállományt is beszúrtam az elején, de így sem működik a dolog.
Ha C programozást tanulsz akkor azt szvsz unix alatt célszerű elkezdeni. De a linux-code listán általános C/C++ kérdést is megválaszolnak (de azért lehetőleg ne olyanokat kérdezz hogy hány f-fel írják a printf parancsot). Az ilyen kérdéseket szvsz itt vagy az lx.hu coder rovatában tedd fel (én legalábbis mást nem ismerek ilyet de ettől persze lehet).
kösz a linket, de én most nem kifejezetten Linux alattira gondoltam... szóval platformfüggetlenül C programozás.... ez lenne a kérdésem. Ilyen lista merre lehet?
Ha jó emléxem (van ?) egy lib amivel a glade-del létrehozott program kinézetét bármikor meg lehet változtatni. Én soha nem használtam, én a GTK-t a wxWindows-on keresztül értem el.
Sziasztok!
Én igazándiból em pont a topic tárgyában kérnék segítséget. Kezdő C programozó lennék, és keresek magyar levlistát, ahl c-vel foglalkoznak. Tudtok segíteni?
Most kezdek programozni linux alatt, es az elso feladatom egybol egy grafikus feluleten futo progi keszitese lenne. A felulet "megrajzolasahoz" a Glade-re esett a valasztasom. Ezzel -ill. GTK-val - kapcsolatos lenne a problemam is: Hogyan tudom egy gomb feliratat letrehozas utan, futas kozben megvaltoztatni? Van egy fuggveny a letrehozashoz, gtk_button_create_with_label. De ezzel csak letrehozaskor tudom megadni a feliratot. A masik egy Hscale elemnek kellene megadni a max erteket szinten futas kozben.
na, kesz. csak sajat fugvenyekkel. 5x lassabban fut le, mint az eredeti progi tette, de ezen biztos lehet javitani. elso korben orulok, hogy fut. ja, es a leforditott kod 4ed annyi lett (linuxon 15k, solarison 9k). meg1x koszi.
nagyon koszi, asszem kihagyom az egesz filekezeleses dolgot, mert keves idom van es nincs ido fuggvenyeket keresgelni. standard inputrol fog olvasni, az szerintem eleg neki, es akkor gyakorlatilag csak szovegeker kell kezelni. ahhoz meg asszem eleg lesz nekem a getchar, putchar, a tobbi szovegkezelo fuggvenyt meg megirom magamnak, vegul is egyszeru tombokrol van szo. bar igy valszeg eleg lassu lesz, de most eloszor mukodnie kell, aztan olvashatom tovabb a konyvet es lehet csiszolgatni...
koszi neked is, es zsowynak is.
Hát igen, ezért írtam, hogy kiindulásnak nem rossz. Vagy lefordítod a p2c lib-jét is solaris-ra (ezzel az erövel a pascal-t is lefordíthatod), vagy a megfelelö részeket átírod igazi c-re.
trooper: cnel, meg gondolom pascalnal is, eloszor van a forditas, aztan a linkeles. na, alanti errorok a linkeles soran keletkeztek. Cnel meg kell adni, h mifele libekkel linkelodjon ossze a program, mar amennyire erre igeny van. jelen esetben van:
p2c e.pas -o e.c
gcc -c e.c #forditas, nincs is semmi error
gcc -o e e.o -lp2c #linkeles
jelen esetben. nekem debian sid van, ott a p2c csomagban van egy p2cc program is, ami nincsen 4k, ugyhogy szerintem vmi wrapper, ami egy hivja meg gcct, h a -lp2c egybol parancsorban ottlegyen.
mas kerdes, h az assingra nekem igy is errorozik, nem tudja ebbol a libbol belinkelni... dehat, hagyok vmit neked is, mert nyakunkon a hetvege, meg pascalhoz nemertek (;
koszi, remlett, hogy van valami ilyesmi, csak valamiert pas2c-re gondoltam es azt nem talaltam.
nem tudja veletlenul valaki, hogy mire fel kapom az alabbi uzeneteket mikor megprobalom leforditani?
/tmp/ccGMWpCV.o: In function `main':
/tmp/ccGMWpCV.o(.text+0x13): undefined reference to `PASCAL_MAIN'
/tmp/ccGMWpCV.o(.text+0x25): undefined reference to `P_argv'
/tmp/ccGMWpCV.o(.text+0x50): undefined reference to `assign'
...
collect2: ld returned 1 exit status
koszi. (ma nagyon halvanyszokenek erzem magam :-))
trooper
van egy progim ami qmail log filebol vadassza ki azt ami nekem kell, de nem tudok c-ben programozni es egy olyan solarisra kell atpakolnom ahol csak c fordito van. most jol megkaptam, hogy azonnal csinaljam meg, es persze nem tudom... napokig fog tartani mire egyaltalan a szukseges fuggvenyeket osszevadaszom. ezzel szemben, ha valaki aki tud c-ben programozni annak szerintem nem egy nagy melo lenne. meg ha csak a hasznalando fuggvenyek megmondana valaki az is sokat segitene. bemasolom ide a pascal forrast, eleg jol kikommenteltem asszem. szoval ha valaki tud segiteni, orok hala. bazsixnak meg egyszer koszi a konyvet, neki is allok, de ez nem egy delutan lesz es most gyujtottak ram a hazat...
program qparser;
type mailrec=record
sender:string;
rcpt:string;
timestamp:string;
bytes:string;
end;
var logf:text;
line,act,tmp:string;
output:mailrec;
begin
if paramstr(1)='' then {Ha nincs parameter akkor a standard inputrol olvas}
assign(logf,'/dev/stdin')
else
assign(logf,paramstr(1));{egyebkent az elso parameterkent megadott filebol}
reset(logf);
act:='';
while act<>'info' do {a levelek kuldese info-s sornal kezdodik}
begin
readln(logf,line);
act:=copy(line,pos(' ',line)+1,length(line)); {a fontos resz a masodik oszlopban van}
act:=copy(act,1,pos(' ',act)-1); {szokozokkel hatarolva (az elso es a masodik szokoz kozott)}
end;
while not eof(logf)do {vegigszaladuk a fileon}
begin
output.timestamp:=copy(line,1,pos('.',line)-1); {a timestamp a sor elejetol az elso pontig tart, ezt betesszuk egy valtozoba}
tmp:=copy(line,pos('<',line)+1,length(line));
output.sender:=copy(tmp,1,pos('>',tmp)-1); {a kuldo e-mail cime <> kozott van}
tmp:=copy(line,pos('bytes',line)+6,length(line));
output.bytes:=copy(tmp,1,pos(' ',tmp)-1); {az elkuldott byteok szama a byte
szo utan kezdodik es a kovetkezo szokozig tart}
repeat {miutan kiszedtuk a kuldo adatait beolvassuk az osszes fogadot}
readln(logf,line);
act:=copy(line,pos(' ',line)+1,length(line));
act:=copy(act,1,pos(' ',act)-1);
if act='starting' then {a starting is az elso es a masodik szokoz kozott van}
begin
tmp:=line;
repeat
tmp:=copy(tmp,pos(' ',tmp)+1,length(tmp)); {a fogado cime az utolso szokoz utan all}
until pos(' ',tmp)=0;
output.rcpt:=tmp;
if output.timestamp<>'' then {ha a startinghoz tartozott info sor, akkor kiirjuk a kimenetre az adatokat}
writeln(output.timestamp+'::'+output.sender+'::'+output.rcpt+'::'+output.bytes);
end;
until (act='info') or (eof(logf)); {a fogadok beolvasasa a kovetkezo kuldes sorig tart}
end;
close(logf);
end.
En, amikor eloszor lattam a programot, kitalaltam az outputot futtatas nelkul, bar nem voltam benne szazszazalakig biztos, lenyegeben az elso sztringben levo masodik specialis karakter miatt.
A unix szimbolumot en sem ismertem, de kizarasos alapon ki tudtam kovetkeztetni: abbol indultam ki, hogy a program lefordul es valami ertelmeset csinal.