cccc.103omega,
-> #102, mitchoŢ To sam nasao u literaturi, ali mi ne radi. Naime, i nakon toga koristi
Ţ ugradeni set znakova. Bio bih zahvalan ako bi neko poslao primer koji radi.
Ovo radi 100% :) Font je 256x16=4096 bajtova duzine.
asm {
push bp
mov ax, seg Font
mov es, ax
mov ax, offset Font
mov bp, ax
mov ax, 0x1100
mov bx, 0x1600
mov cx, 256
xor dx, dx
int 0x10
pop bp
}
cccc.104jkpbvk,
This the C source code for 3d rotating picture.
-----------------------------------------------
#include <graphics.h>
#include <math.h>
int sx,sy;
float cr1,sr1,cr2,sr2,cr3,sr3,x2,y2;
int midx,midy,d;
/*void calc_3d(int x, int y, int z)
{
float y2,z2;
z2=cr3*z-sr3*y;
y2=sr3*z+cr3*y;
z2=z2-350;
sx=(d*(x2/z2))+159;
sy=(d*(y2/z2))+99;
}*/
void calc_3d(int x, int y, int z)
{
float xa,za,ya,x2,y2,z2;
x2=(-1)*x;
y2=y;
z2=z;
xa=cr1*x2-sr1*z2;
za=sr1*x2+cr1*z2;
x2=cr2*xa+sr2*y2;
ya=cr2*y2-sr2*xa;
z2=cr3*za-sr3*ya;
y2=sr3*za+cr3*ya;
z2=z2-350;
sx=(d*x2/z2)+midx;
sy=(d*y2/z2)+midy;
}
int huge detect_svga()
{
int vid=0;
return vid;
}
void main()
{
int x,y,z,gd=DETECT,gm,lcv;
int x1[3362],y1[3362],acc;
char col;
float turn;
printf("How complex do you want it (3-highest to 20-lowest):");
scanf("%d",&acc);
printf("%d",acc);
getch();
installuserdriver("svga256",detect_svga);
initgraph(&gd,&gm,"");
setcolor(15);
for (turn=0;turn<=M_PI*4;turn=turn+0.05)
{
cr1=cos(turn);
sr1=sin(turn);
cr2=cos(turn);
sr2=sin(turn);
cr3=cos(turn);
sr3=sin(turn);
midx=cos(turn)*20+159;
midy=sin(turn)*20+99;
d=sin(turn)*700;
lcv=0;
col=1;
for (x=-40;x<=40;x+=acc)
{
x2=x*(-1);
for (y=-40;y<=40;y+=80)
{
for (z=-40;z<=40;z+=acc)
{
calc_3d(x,y,z);
putpixel(x1[lcv],y1[lcv],0);
x1[lcv]=sx; y1[lcv]=sy;
putpixel(x1[lcv],y1[lcv],col);
lcv++;
}
}
}
col=2;
cr1=cos(turn+M_PI);
sr1=sin(turn+M_PI);
cr2=cos(turn+M_PI);
sr2=sin(turn+M_PI);
cr3=cos(turn+M_PI);
sr3=sin(turn+M_PI);
midx=cos(turn+M_PI_2)*20+159;
midy=sin(turn+M_PI_2)*20+99;
d=sin(turn+M_PI_2)*700;
for (x=-40;x<=40;x+=80)
{
x2=x*(-1);
for (y=-40;y<=40;y+=acc)
{
for (z=-40;z<=40;z+=acc)
{
calc_3d(x,y,z);
putpixel(x1[lcv],y1[lcv],0);
x1[lcv]=sx; y1[lcv]=sy;
putpixel(x1[lcv],y1[lcv],col);
lcv++;
}
}
}
printf("%d",lcv);
}
}
cccc.105postmast,
From: Aleksandar.Glumac@f119.n111.z38.setgate.setnet.co.yu (Aleksandar Glumac)
Subject: cccc
Date: Thu, 09 Mar 1995 15:43:00
"O> Jel' nekog interesuje ovo ?
"O> Paket rutina za pravljenje igara mada je sve to jako sporo i
"O> vecina je
"O> pisana za MSC sto mi veoma smeta i nervira ali sta je tu je
Pa mene bi(h) zanimalo. Kol'ko sam ja skont'o on ti isporuci vec pisane
rutine.
Odakle si skinuo ?
Ako te ne mrzi , baci mi par redova odgovora natrag , ok :)
Pozdrav Ace B)
"O> pisana za MSC sto mi veoma smeta i nervira ali sta je tu je
U kom jeziku radis ? Ja sam TC++ -ovac :))
* Origin: ECSTASY BBS * Indjija * 022 53 218 * SETNet: (38:111/119)
cccc.106bpekic,
Ako se neko zabavlja sa SVGACC20.lib, i ako ima problema sa funkcijama
za misa, neka OBAVEZNO nabavi MICROSOFT driver za misa, inace nista od
rada.
Naime ako se misem kojeg "goni" neki drugi drajver, predje preko slike,
mis ostavlja trag za sobom i kvari sliku potpuno!
Genius driver ne radi, na primer.
Eto ta sitnica me je izludjivala jedan ceo dan, dok nisam postupio
prema Murf-iju, "kada nista drugo ne pomaze, mozda treba procitati
uputstvo"
Pozdrav svima!
cccc.107jkpbvk,
Kad nece file moderator ima ko hoce :))
The Graphics Engine29ßc (Public Beta) Tge Is
A Vga/Svga Graphics Library For C/C
Programmers, With Complete Source Code. Tge
Has Such Features As A Powerful Library Of
Graphical And Mouse Interface Functions,
Device-Independence, Support For Loadable
Drivers And Fonts, Virtual Screens, Viewports
And Advanced Clipping, Output Modes, Virtual
Coordinates, Bitmap Scaling, Definable Mouse
Pointers, And More.
tge129c.rarcccc.108mitcho,
-> #103, omega> Ovo radi 100% :) Font je 256x16=4096 bajtova duzine.
Da, i ovo sam znao, ali nije htelo da radi. Samo, nisam radio u
asembleru, nego sam koristio REGS uniju i int86() funkciju. Izgleda da
sam loše prosleđivao segment i ofset tabele karaktera. E, u
međuvremenu sam uspeo da postignem ono što sam hteo, sledećim kodom:
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
struct REGPACK reg;
unsigned segm,offs;
char Font[40000]={255,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,255,255,68,68,68,68,68,68,68,68,68,68,68,68,68,68,255};
void main() {
segm=FP_SEG(Font);
offs=FP_OFF(Font);
reg.r_ax=0x1100;
reg.r_bx=0x1000;
reg.r_cx=2;
reg.r_dx=128;
reg.r_es=segm;
reg.r_bp=offs;
intr(0x10,®);
}
Sada se na mestu 128 nalazi prazan box, a na 129 drugi karakter (da ga
ne opisujem :)
Omega, hvala na trudu. Ova tvrdnja da radi 100% me naterala da ne
odustanem. BTW, u liniji mov bx,0x1600 treba da stoji 0x1000.
Međutim, opet se dešava čudna stvar. Kad ovo kompajliram sa TC2.0, ne
dobija se ono što bi trebalo. Naime, karakteri 128 i 129 se štampaju kao
blanko! Ako kompajliram sa BC++3.1, sve je u redu. Ima li ko ideju zašto
se ovo dešava?
I, za kraj, jedno iskustvo. Kad sam niz Font deklarisao u funkciji
main(), nije htelo da radi. Kad sam ga deklarisao kao globalnu prom.
proradilo je.
cccc.109omega,
-> #108, mitchoŢ char Font[40000]
^^^^^
Dobro, nemoj da preterujes ;) Dovoljno ti je broj_znakova*16.
Ţ odustanem. BTW, u liniji mov bx,0x1600 treba da stoji 0x1000.
Da, lapsus tastaturis :)
Ţ Kad ovo kompajliram sa TC2.0, ne dobija se ono sto bi trebalo.
Baš čudno.
Ţ Kad sam niz Font deklarisao u funkciji main(), nije htelo da radi.
Baš sam probao i radi. Nešto si 'ispustio'.
cccc.110dejanr,
Predstavljen Microsoft Visual C++ 2.1. NOVOSTI/microb 4.4053.
cccc.111mitcho,
-> #109, omega> Ţ char Font[40000]
> ^^^^^
> Dobro, nemoj da preterujes ;) Dovoljno ti je broj_znakova*16.
:)))))) Znam, ali to je posledica dugotrajnog eksperimentisanja sa
implementiranim punjenjem tog niza, pa sam posle zaboravio da smanjim
veličinu niza. Iz istog razloga ima i više #include... nego što treba.
> Ţ Kad ovo kompajliram sa TC2.0, ne dobija se ono sto bi
> trebalo.
>
> Baš čudno.
Imaš li kakvu ideju?
> Ţ Kad sam niz Font deklarisao u funkciji main(), nije htelo da
> radi.
>
> Baš sam probao i radi. Nešto si 'ispustio'.
Hm, dobro, nije bio samo font, nego sve promenljive. I posle sam ih
markirao i prebacio "napolje" i *ništa drugo nisam menjao*, kad proradi.
A šta se dešavalo kad su bile u main: (na kraju datog programa bilo je i
jedno putchar(128);
Kod TC2.0 ispiše karakter (blanko) i do besvesti ispisuje Abnormal program
termination. A za to vreme ekran vrlo čudno "bljeska". Moglo se
prekinuti sa ctrl+break.
Kod BC++3.1 ispisuje pravi karakter, ali takođe do besvesti. I, takođe,
ekran vrlo čudno izgleda (ne mogu to lako da opišem). Prekida se sa
ctrl+break.
Možda je stvar u nekoj opciji kompajlera, koja se razlikuje kod nas
dvojice. Ali, veruj mi, samo ta promena mesta deklaracije je, kod mene,
rešila problem koji je postojao.
cccc.112omega,
-> #111, mitchoŢ Kod TC2.0 ispise karakter (blanko) i do besvesti ispisuje Abnormal program
Ţ termination. A za to vreme ekran vrlo cudno "bljeska". Moglo se
Ţ prekinuti sa ctrl+break.
Pa pogledaj u TD-u sta se desava. Ako nisi koristio inline asm,
onda je to sve vrlo cudno.
cccc.113omega,
-> #107, jkpbvkPovodom slanja TGE (The Graphics Engine v1.29), evo ozbiljnih razloga
zasto ga NE upotrebljavati:
(betatest.doc)
The following known bugs exist at present:
- Only part of the screen can be accessed in Cirrus or Paradise SVGA
modes.
- In Tseng ET4000 SVGA modes, graphics input such as getImage() and
getPixel() is not done correctly.
Medjutim, posto je prilozen source, nije uzaludno skidanje :)
Nego, da nije neko mozda poredio brzine rada SVGACC i TGE?
Ako je TGE brži, onda vredi naći i ispraviti gore navedene
bagove.
cccc.114bpekic,
-> #113, omegaAko pogledas SVGACC20 i TGE bibloteku, prema funkcijama, nislim da je
SVGA kompletnija u smislu, vise toga ima. Ja sam koristio neke stvari iz
SVGA (zoom i slicno) i odlicno radi. Sto se brsine tice, diskutabilno je
KOJE brzine meriti.
Pozdrav!
cccc.115postmast,
From: andrea@fon (Andrea Prunic)
Subject: lista...
Date: Wed, 15 Mar 1995 01:17:24 GMT
E ovako.
Ja sam jos uvek pocetnik za C(priznajem) pa mi je malo nejasno zasto
imam nekih problema kad pokusavam da napravim obicnu listu struktura.
Naime, napravim nesto tipa:
typedef struct cvor
{ char *rec;
int cnt;
struct cvor *next;
} slog;
slog *prvi,*zad;
void main(void)
{
char niz[10];
niz="pera";
prvi=(slog*)malloc(sizeof(slog));
prvi->next=NULL;
prvi->rec=(char*)malloc(sizeof(strlen(niz)+1));
strcpy(prvi->rec,niz); /*ovde je prvi->rec="pera"*/
niz="zika";
zad=prvi;
zad->next=(slog*)malloc(sizeof(slog));/*ovde se prvi->rec promeni u
"pera\v"!!!*/
zad=zad->next;
zad->next=NULL;
zad->rec=(char*)malloc(sizeof(strlen(niz)+1));
strcpy(zad->rec,niz); /*ovde je zad->rec="zika"*/
}
Za one koji znaju paskal, ovo je ocito fazon pravljenja liste u
paskalu(uproscena lista sa 2 elementa). E ali u TurboC++1.0 javlja se
ono misteriozno menjanje prethodnog sloga iz "pera" u "pera\r" ili
"pera\v" a zadnji uneti slog ostaje ok.
A na Linux-u sve radi ok.
Ocito, ako bih pokusao da poredim elemente dva cvora u kojima je rec
ista, to ne bi radilo jer bi jedan uvek bio "xxxx\r" a drugi "xxxx".
Medjutim, i u jednom i u drugom slucaju sa listom normalne velicine
se desava da u DOS-u qemm javi exception 13, bez qemm-a zaglavi,
a u Linux-u iskace Segmentation fault.
Sad, ako neko ima resenje KAKO se stvarno pravi dobra i sigurna lista
u C-u a koja radi i u DOS-u i pod UNIX-om(ili bar jedno), nek mi salje
odgovor i to detaljno, jerbo pocinjem da se nerviram vec. Samo bez
rekurzija, jer ih nikako ne volim.
A,da. Zasto pod Linux-om ne radi
{ char *niz;
scanf("%s",niz);} a pod DOS-om radi?
Ako je odgovor velik, neka mi posalje u private mail na
andrea@fon.fon.bg.ac.yu
Hvala!
... mA NIJE BRE NISTA, SAMO MI ZAGLAVLJUJE cAPS lOCK...
___ Blue Wave/QWK v2.12
cccc.116omega,
Jel BC mora da, prilikom kompajliranja, pravi one ogromne *.sym fajlove?
cccc.117omega,
-> #114, bpekicŢ Sto se brsine tice, diskutabilno je KOJE brzine meriti.
Brzine setpixel, putpixel, getimage, putimage, outtextxy.
Ostale su ionako egzoticne :)
cccc.118jkpbvk,
-> #114, bpekic+| Ako pogledas SVGACC20 i TGE bibloteku, prema funkcijama, nislim da je
+| SVGA kompletnija u smislu, vise toga ima. Ja sam koristio neke stvari iz
+| SVGA (zoom i slicno) i odlicno radi. Sto se brsine tice, diskutabilno je
+| KOJE brzine meriti.
Po meni je bolja SVGACC20, verovatno ima nekih poboljsanja u SVGACC21.
Jedini problem je u tome sto je nemoguce recimo staviti gif u exe fajl
i sa fseek doterati na njegov pocetak u exe fajlu i odatle iscitati
podatke za gif, isto tako i sa fontovima.
Nego, posalji onaj help u wri formatu.
cccc.119eotek,
-> #118, jkpbvk> Po meni je bolja SVGACC20, verovatno ima nekih poboljsanja u
....
> fontovima.
^^^^^^^^^^^
ima ih vise ? gde ?
kojim font editorom se mogu obradjivati i ima li ga ko ?
ima li neko juski ?
cccc.120maksa,
-> #116, omega>> Jel BC mora da, prilikom kompajliranja, pravi one ogromne
>> *.sym fajlove?
Ako ti smeta:
Options, Compiler, Code generation - isključi Pre-compiled headers.
(izgubićeš na brzini prevođenja)
cccc.121maksa,
-> #119, eotek>> kojim font editorom se mogu obradjivati i ima li ga ko ?
Mogu da se obradjuju font editorom koji se dobije uz
biblioteku ... kad je registruješ. :(
cccc.122mitcho,
-> #112, omega> Pa pogledaj u TD-u sta se desava. Ako nisi koristio inline asm,
> onda je to sve vrlo cudno.
Nisam. Koristio sam onaj program koji sam poslao, samo što su
deklaracije svih promenljivih bile u main() funkciji.
cccc.123djuradj,
Pogledajte sledeci program:
#include <stdio.h>
typedef struct komp
{
float re;
float im;
} KOMP;
/*----------------------------------------------------------------*/
KOMP racun(a,b,o)
KOMP a,b;
char o;
{
KOMP c;
switch (o)
{
case '*':
c.re=a.re*b.re-a.im*b.im;
c.im=a.im*b.re+b.im*a.re;
break;
case '/':
/*izraz za izracunavanje deljenja comp brojeva*/
break;
case '+':
c.re=a.re+b.re;
c.im=a.im+b.im;
break;
case '-':
c.re=a.re-b.re;
c.im=a.im-b.im;
break;
default:
printf("Pogresno unet operator!\n");
}
return(c);
}
/*-----------------------------------------------------------*/
main()
{
char o;
KOMP a,b,c;
printf("\nUnesite prvi broj (re,im) :");
scanf("%f",&a.re);
scanf("%f",&a.im);
printf("\nUnesite operator (*,/,+,-):");
scanf("%c",&o);
printf("\nUnesite drugi broj (re,im):");
scanf("%f%f",&b.re,&b.im);
c=racun(a,b,o);
printf("\n\nRezultat je : %f%ci%f\n",c.re,(c.im)<0?'-':'+',c.im);
getchar();
return(0);
}
Problem se javlja kod ocitavanja karaktera 'o'.Naime lepo ucita
a.re,a.im,onda preskoci unos o,i onda opet normalno ucita b.re i
b.im.
Pogiboh trazeci gresku,nemam vise zivaca!
POMAGAJTE!!!
Pozdrav,
Mindza.
P.S.Ako je nesto prosto ubicu se!
P.P.S.Imam TC 2.0 i TC++ 1.1.
cccc.124postmast,
From: vukota@fon (Milos Vukotic)
Subject: cccc
Date: Sat, 18 Mar 1995 09:11:23 GMT
> char Font[40000];
A koliki si stavio da ti je stack (kada si to ubacio u main , TC 2.0) ?
"The default stack size iz 4096 bytes" , a gde je 40000 !
Vukota
cccc.125postmast,
From: NIKOLI05892D@BUEF31.ETF.BG.AC.YU (Nikolic Ivica)
Subject: Re: CPP
Date: Sat, 18 Mar 1995 12:23:01 GMT
In <D5LInK.tJ@zmaj.etf.bg.ac.yu> ddjokic@galeb.etf.bg.ac.yu writes:
> predprocesorskim direktivama i ako postoji kakva je tacno
> sintaksa. Konkretno da li je moguce pisati nesto poput
>
> #ifdef (PERA && MIKA) i slicno..
>
Tesko da je moguce, ali zato sledeca sekvenca sigurno radi:
#ifdef PERA
#ifdef MIKA
Radi sta je potrebno
#endif
#endif
Problem je samo sto mi ne pada na pamet kako bi se sredila konstrukcija:
#ifdef (PERA || MIKA)
...
Tacnije, pada mi na pamet jedino idiotska ideja:
#ifdef PERA
Radi nesto
#endif
#ifdef MIKA
Radi to isto
#endif
cccc.126postmast,
From: ddjokic@fon (Dragan Djokic)
Subject: Re: CPP
Date: Sat, 18 Mar 1995 16:21:23 GMT
Nikolic Ivica (NIKOLI05892D@BUEF31.ETF.BG.AC.YU) je rekao/la:
>> Tesko da je moguce, ali zato sledeca sekvenca sigurno radi:
>> #ifdef PERA
>> #ifdef MIKA
>> Radi sta je potrebno
>> #endif
>> #endif
Hvala, ali to znam i sam ...
>> Tacnije, pada mi na pamet jedino idiotska ideja:
>> #ifdef PERA
>> Radi nesto
>> #endif
>> #ifdef MIKA
>> Radi to isto
>> #endif
I meni isto :))))))), pa sam tako i pisao. Bas bi bilo lepo
da je i ono moguce, bar estetski.
--
Djole ( ddjokic@fon.fon.bg.ac.yu )
cccc.127postmast,
From: NIKOLI05892D@BUEF31.ETF.BG.AC.YU (Nikolic Ivica)
Subject: Re: lista...
Date: Wed, 15 Mar 1995 15:16:38 GMT
In <D5GJL1.EKB@fon> andrea@fon writes:
....
> imam nekih problema kad pokusavam da napravim obicnu listu struktura.
....
> void main(void)
> {
> char niz[10];
> niz="pera";
^---- !!!!!!!!!!!!
Nije mi jasno kako ti je uopste kompajler progutao ovakvu liniju,
u C-u ime niza nije lvalue, tj. ne moze da se nalazi levo od operatora
dodeljivanja. Ispravno je :
strcpy( niz, "pera" );
> { char *niz;
> scanf("%s",niz);} a pod DOS-om radi?
Ako je i radilo pod Lynux-om, to je bila cista slucajnost. Deklaracijom
char *niz;
Kreira se pointer tipa char, ciji je sadrzaj posle takve deklaracije
potpuno slucajan (ili je nula, ako je deklaracija staticka). Da bi sve radilo
kako treba, moras prvo da alociras potreban prostor:
niz = (char*) malloc( PotrebnaVelicina );
Pa tek onda
scanf( "%s", niz );
Ima jos jedna stvar koja bi mogla da napravi probleme: scanf pod jednim
stringom podrazumeva niz znakova od kojih nijedan ne moze da bude 'belina'.
Konkretno, ako se kao ulaz gorenavedenom pozivu scanf ukuca string koji
sadrzi razmake, npr.
Dve reci
Sadrzaj niz-a ce biti "Dve". Ako je potrebno ucitati celu ulaznu liniju kao
jedan string, treba koristiti funkciju gets:
gets( niz );
I treba obratiti paznju da gets na kraj stringa dodaje '\n', pa tek
onda nulom markira kraj stringa.
cccc.128postmast,
From: OGNEN.IVANOVSKI@f131.n108.z38.setgate.setnet.co.yu (OGNEN IVANOVSKI)
Subject: B+/ISAM Manager
Date: Mon, 13 Mar 1995 00:09:00
Dali je neko ikad probao "ISAM Manager, made by NILDRAM
Software". Ako da, impresije....
====================================================================
May The Force be with you! Milkman
====================================================================
___
■ SPEED 1.40 [NR] ■ Daddy, what does FORMATTING DRIVE C mean?"
* Origin: SetNet * VEGA BBS * Skopje * +389 91 225 280 (38:108/131)
cccc.129postmast,
From: OGNEN.IVANOVSKI@f131.n108.z38.setgate.setnet.co.yu (OGNEN IVANOVSKI)
Subject: cccc
Date: Mon, 13 Mar 1995 00:44:00
"O|>From: "Milivoje Ognjanovic" <jkpbvk@sezam.UUCP>
"O|>Newsgroups: yu.prog.c
"O|>Organization: SEZAM Beograd, 011 648-422
"O|>Jel' moze neko da resi sledeci problem ?
"O|>Naime, uvek sam imao problem da nadjem niz kodova u fajlu ali da ne idu
"O|>jedan za drugim , recimo :
"O|>B8 20 00 50 E8
"O|>E sad , meni je potrebno da mi izdvoji sve adrese na kojima naidje
"O|>na B8 - - 50 E8 , znaci kad naidje na B8 preskoci sledeca 2 i ispita da li
"O|>je sledeci 50 , ako jeste ispita da li je sledeci E8 i ako jeste izbaci
"O|>adresu.
Je'l mozze u C++:
-- File: b8.cpp ----------------------------------------------
#include <fstream.h>
#include <iostream.h>
const char cb8 = char(0xb8);
const char c50 = char(0x50);
const char ce8 = char(0xe8);
void main() {
ifstream f("milkman.cod", ios::binary); // otvori file
char ch;
char tmp[4];
char *tp = tmp;
long adr;
while (!f.eof()) {
tp = tmp;
adr = f.tellg();
f.get(ch);
if (ch == cb8) { // ako je nadjen B8h
for (int i=1; i<=4; i++) // uccitaj sledecca
f.get(*tp++); // 4 bajta u tmp
if ((tmp[2] == c50) && // dali su 3 i 4
(tmp[3] == ce8)) // bajt trazzeni
// ako da, ispissi adresu
cout << "Found on " << adr << endl;
for (i=3; i>=0; i--) // vrati nazad ona 4 bajta
f.putback(tmp[i]); // kako bi se proverilo
// dali medju njih ima
// B8h
}
}
cout << "Done!" << endl;
}
-----------------------------------------------------------------
Test file:
-- File: milkman.cod --------------------------------------------
Ş
-----------------------------------------------------------------
Nadam se da sam pomogao.
====================================================================
May The Force be with you! Milkman
====================================================================
___
■ SPEED 1.40 [NR] ■ Misfortune: the kind of fortune that never misses.
* Origin: SetNet * VEGA BBS * Skopje * +389 91 225 280 (38:108/131)
cccc.130postmast,
From: ddjokic@galeb.etf.bg.ac.yu (Dragan Djokic)
Subject: CPP
Date: Fri, 17 Mar 1995 17:45:19 GMT
Dva pitanjca :
Prvo: Da li postoji mogucnost koriscenja operatora I i ILI u
predprocesorskim direktivama i ako postoji kakva je tacno
sintaksa. Konkretno da li je moguce pisati nesto poput
#ifdef (PERA && MIKA) i slicno..
Drugo: Kako ESC sekvencama ograniciti deo ekrana za skrolovanje.
Probao sam svasta ali nisam uspeo, stalno se skroluje ceo ekran.
Sekvencu je lako pokupiti ali nikako ne uspevam da ubacim u nju
brojeve redova pa da se recimo skroluje deo ekrana, recimo od
5 do 15 linije.
Pozdrav, Djole
cccc.131postmast,
From: Andrija.Gencel@f107.n111.z38.setgate.setnet.co.yu (Andrija Gencel)
Subject: Razmrdavanje
Date: Thu, 09 Mar 1995 14:34:46
Sta znaci ova deklaracija?
txx *ox->() {dalije();}
... A feature is a bug with seniority.
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
cccc.132postmast,
From: SETN@f101.n101.z38.setgate.setnet.co.yu (SETN)
Subject: Statistics
Date: Thu, 16 Mar 1995 22:38:00
Maintaned by CONFERENCE STATISTICS SHELL - (c)1995 by Predrag Supurovic
=======================================================================
Conference NET.C-LANG maintained on 16.02.95. for 28 days backward.
QRATIO Mail Statistics V1.9 by Act Of Impulse.
----------------------------------------------
Total messages found in this area : 207
Number of messages covered in report: 44
Processed period from: 19-2-1995 to 15-3-1995
------------------------------------------------------------------------------
Blacklist-Top 5 of the Quoters.
Nr Total Quoted Quote
Name Address Msg Lines Lines: Ratio:
---- ------- --- ----- ------ ------
1. Marko Milivojevic........ 38:103/130 1 14 9 64.29%
2. Vojislav Mihailovic...... 38:103/133 1 16 9 56.25%
3. Brankica Kranjac......... 38:103/110 1 13 7 53.85%
4. "Nenad Nikolic".......... Invalid Origin 2 40 16 40.00%
5. Goran Turudich........... 38:103/110 2 61 21 34.43%
------------------------------------------------------------------------------
Top 5 of the writers.
Total Average Quote
Name Msgs: Pct. Byte/Msg Ratio:
---- ----- ----- -------- ------
1. "Milivoje Ognjanovic" 9 20.5% 1134 0.00%
2. Aleksandar Glumac 3 6.8% 402 31.25%
3. "Nenad Nikolic" 2 4.5% 803 40.00%
4. OGNEN IVANOVSKI 2 4.5% 1366 18.03%
5. "Milan Maksimovic" 2 4.5% 429 5.88%
------------------------------------------------------------------------------
Top 5 of the receivers.
Total
Name Msgs: Pct.
---- ----- -----
1. All 32 72.7%
2. Victor Stevanovic 2 4.5%
3. Ivan Glisin 2 4.5%
4. Branka Kranjac 2 4.5%
5. "Milivoje Ognjanovic" 2 4.5%
------------------------------------------------------------------------------
Top 5 of the subjects.
Subject Nr.
------- ---
1. cccc........................................................ 29
2. Bugovi Borlanda............................................. 8
3. DOS funkcija 09h............................................ 4
4. Statistics.................................................. 1
5. Biblioteke.................................................. 1
------------------------------------------------------------------------------
Average posting frequency per week:
Day Msgs Pct. Graph
Sunday 5 11.4% ****************************
Monday 7 15.9% ***************************************
Tuesday 8 18.2% *********************************************
Wednesday 9 20.5% ***************************************************
Thursday 6 13.6% **********************************
Friday 3 6.8% *****************
Saturday 6 13.6% **********************************
------------------------------------------------------------------------------
Average posting frequency per day:
Interval Msgs Pct. Graph
-------- ---- ----- -----
0:00- 1:59 6 13.6% *********************************************
2:00- 3:59 2 4.5% ***************
4:00- 5:59 3 6.8% **********************
6:00- 7:59 1 2.3% *******
8:00- 9:59 1 2.3% *******
10:00-11:59 1 2.3% *******
12:00-13:59 7 15.9% *****************************************************
14:00-15:59 5 11.4% *************************************
16:00-17:59 7 15.9% *****************************************************
18:00-19:59 4 9.1% ******************************
20:00-21:59 3 6.8% **********************
22:00-23:59 4 9.1% ******************************
------------------------------------------------------------------------------
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
cccc.133smarkov,
-> #115, postmast> char niz[10];
> niz="pera";
Ovo ANSI kompajler ne guta (desna strana mora da bude lvalue) tako da
dalje ne može da se analizira.
> { char *niz;
> scanf("%s",niz);} a pod DOS-om radi?
Ne radi ni pod DOS-om - jednostavno se ne manifestuje greška. Upisuješ
sadržaj u 'niz' (neinicijalizovan pointer -> *kernel=NEZGODAN_SADRZAJ :) ).
pozdrav, smarkov
cccc.134jkpbvk,
-> #129, postmast+| Nadam se da sam pomogao.
Naravno, vec sam pomislio da je nemoguce :))
Thanx
cccc.135smarkov,
-> #123, djuradj> scanf("%c",&o);
> printf("\nUnesite drugi broj (re,im):");
Gornji 'scanf' pročita \n koji je ostao u stdin posle prethodnog
'scanf'. (Radi se o formatnoj specifikaciji %c). Najjednostavnije
rešenje :
char o[10];
umesto scanf("%c", &o) -> scanf("%s", o);
o[0] tada sadrži operator.
pozdrav, smarkov
cccc.136smarkov,
-> #125, postmast>> #ifdef (PERA && MIKA) i slicno..
Postoji preprocesorki operator "defined" i preprocesorska direktiva #if.
Dakle :
#if defined(PERA) && defined(MIKA)
ObaDefinisanaKod
#endif
#if defined(PERA) || defined(MIKA)
...
#endif
Sa ovim operatorom i logičkim operatorima mogu se graditi izrazi
proizvoljne slozenosti.
cccc.137pyramid,
Da li neko zna da li postoji neka verzija Btrieve-a veca od 5.10?
cccc.138pyramid,
Potreban je spisak/objasnjenje funkcija Netware i Lantastic DOS API-ja...
Ako neko ima neki file, ili mozda zna neki tacan izvor (casopis, knjiga), ili
mozda zna napamet (?!), nek dojavi....
cccc.139postmast,
From: sinisa@fon (Mr. Sinisa Neskovic)
Subject: Re: CPP
Date: Sat, 18 Mar 1995 17:20:52 GMT
Dragan Djokic (ddjokic@galeb.etf.bg.ac.yu) wrote:
: Prvo: Da li postoji mogucnost koriscenja operatora I i ILI u
: predprocesorskim direktivama i ako postoji kakva je tacno
: sintaksa. Konkretno da li je moguce pisati nesto poput
: #ifdef (PERA && MIKA) i slicno..
Moguce je koriscenjem #if direktive i 'defined' operatora :
#if defined(PERA) && defined(MIKA)
....
#endif
Sintaksa za koriscenje #if direktive je:
#if <test>
<text>
[#elif <test>
<text> ]
...
[#else
<text> ]
#endif
Za <test> se koristi 'defined' operator, a mogu se graditi i slozeni logicki
testovi koriscenjem operatora && (logicko i), || (logicko ili) i ! (logicko
ne) kao sto sam naveo u prethodnom primeru.
Direktiva #ifdef je ostala iz ranijih verzija C-a zbog kompatibilnosti.
U novim programima se preporucuje upotreba #if direktive i operatora
'defined'.
cccc.140postmast,
From: Goran.Turudich@f110.n103.z38.setgate.setnet.co.yu (Goran Turudich)
Subject: Bugovi Borlanda
Date: Mon, 06 Mar 1995 22:51:04
U vezi "Borlandovih bubica" i calculatora Vojislav Mihajlovic kaze:
GT> Kako calculator izvodi operaciju
GT> stepenovanja (x na y)? Izgleda da to nije iterativni
GT> postupak - jer da jeste, sve bi bilo OK.
VM>Mislim da svi kalkulatori to rade pomocu logaritmovanja. To
VM>bude dovoljno dobro za male brojeve, ali za nesto vece...
Bez veze, stvarno - pa, bas kod malih brojeva iterativni postupak je
brz i predstavlja najbolje resenje, a kod velikih brojeva bi tek imalo
smisla vrsiti logaritmovanje, pa svodjenje na mnozenje, a zatim
antilogaritmovanje.
VM>A kad je osnova negativna, svaki se snalazi kako zna i
VM>ume. Neki provere da li je stepen paran ili ne pa mu udare
VM>predznak, neki uvek daju pozitivaan broj, a neki kod
VM>stepenovanja negativnog brojaa jave gresku (kao, shatro,
VM>ne postoji logaritam negativnog broja).
Ufff, to mora da su neki tajvanski ili mandzurijski calculatori (nije
moj CASIO ni tako los). Ih, izgubih veru u racunske masine - od sada
racunam na prste :))))
* Origin: # New Age # 23-06h # Beograd # SETNet: (38:103/110)
cccc.141postmast,
From: andrea@fon (Andrea Prunic)
Subject: Re: lista...
Date: Sun, 19 Mar 1995 01:50:31 GMT
ĐŠč On 03-15-95 15:16 Nikoli05892d@buef31.etf.b wrote:
> void main(void)
> {
> char niz[10];
> niz="pera";
Ni> Nije mi jasno kako ti je uopste kompajler progutao ovakvu liniju,
Ni> u C-u ime niza nije lvalue, tj. ne moze da se nalazi levo od operatora
Ni> dodeljivanja. Ispravno je :
Ni> strcpy( niz, "pera" );
Ovo gore sam pisao u 4 ujutro, polugrogi, pa sam skoro spavao.
Inace znam da mora da ide sa strcpy. My fault... :)
> { char *niz;
> scanf("%s",niz);} a pod DOS-om radi?
Ni> Ako je i radilo pod Lynux-om, to je bila cista slucajnost.
Pod linux-om nije radilo, u tome je stos.
A objasnjenje koje sam danas dobio od profe na faksu je da u DOS-u to
radi jer on dozvoljava kojesta i ne proverava nista, pa moze da se ucita
neki string negde u memoriju, ali ne znaci da ce se ucitati u SLOBODNU
memoriju, dok se u varijanti char niz[10] odmah rezervise 10 slobodnih
pozicija koje se popunjavaju.
Ni> staticka). Da bi sve radilo kako treba, moras prvo da alociras potreban
Ni> prostor:
Ni> niz = (char*) malloc( PotrebnaVelicina );
Ni> Pa tek onda scanf( "%s", niz );
Ovo ako unapred znam koliki mi je niz, a ako ne znam, ovaj stos bi morao
da se radi preko realloc za svaki novi karakter preko nekog broja ili
pomocu nekog pomocnog stringa.
Medjutim, moje pitanje je jos bez odgovora: zasto mi malloc za sledeci
slog liste menja prethodni slog?
... Neko jos nije rekao:"Vama ne sme niko da iskljucuje struju!"
___ Blue Wave/QWK v2.12
cccc.142postmast,
From: dragisha@hobbiton.CO.YU (Dragisa N. Duric)
Subject: Re: Razmrdavanje
Date: Sun, 19 Mar 1995 13:39:04 GMT
Andrija Gencel (Andrija.Gencel@f107.n111.z38.setgate.setnet.co.yu) wrote:
-> Sta znaci ova deklaracija?
-> txx *ox->() {dalije();}
Neko se napio ili ufiksao.
cccc.143bulaja,
-> #138, pyramid│Potreban je spisak/objasnjenje funkcija Netware i Lantastic DOS
│API-ja... Ako neko ima neki file, ili mozda zna neki tacan izvor
│(casopis, knjiga), ili mozda zna napamet (?!), nek dojavi....
└───
R:\InfoProg\Inter43*.*
cccc.144mjova,
-> #116, omega> Jel BC mora da, prilikom kompajliranja, pravi one ogromne
> *.sym fajlove?
tesan disk? a? ;)
cccc.145pyramid,
-> #143, bulaja>> │Potreban je spisak/objasnjenje funkcija Netware i Lantastic D
>> │API-ja... Ako neko ima neki file, ili mozda zna neki tacan iz
>> │(casopis, knjiga), ili mozda zna napamet (?!), nek dojavi....
>> └───
>> R:\InfoProg\Inter43*.*
Reci mi bar broj interapta ako znas... Gledao sam u Inter42 i pojavljuje se
Netware API na int 7Bh, ali nisu bas objasnjeni pozivi vec samo nabacani, jedan
za drugim...
cccc.146omega,
-> #144, mjovaŢ tesan disk? a? ;)
Da. Smrk :( Ali posto se dobija na brzini, bolje da stoji *.sym.
cccc.147bulaja,
-> #145, pyramid│Reci mi bar broj interapta ako znas... Gledao sam u Inter42 i
│pojavljuje se Netware API na int 7Bh, ali nisu bas objasnjeni
│pozivi vec samo nabacani, jedan za drugim...
└───
E uzeše mi (neću imenovati ko, prepoznaće se sam:) baš juče Novell-ov
SDK CD, tako da ćeš za neko detaljnije objašnjenje morati da sačekaš ili
da se zadovoljiš time što ima u Inter listi (tu su svi pozivi, mada malo
nabacano i nerazumljivo:). Inače NetWare API nije na Int 7Bh, već 21h
(tu je i Lantastic, koliko se sećam i njega si tražio?:).
cccc.148jkpbvk,
Kako se kompajlira ovo uz poruku ...
Rec je o biblioteci za pustanje fli,flc-ova.
fli.rarcccc.149mjova,
-> #147, bulaja>│ Reci mi bar broj interapta ako znas... Gledao sam u
>│ Inter42 i
> E uzeše mi (neću imenovati ko, prepoznaće se sam:) baš
> juče Novell-ov SDK CD, tako da ćeš za neko detaljnije
> objašnjenje morati da sačekaš ili
dobro, pogledaću ;)
cccc.150vbacko,
Citala sam teks u rcunarima 93 o rezidnetnim programima pa me
interesuje sta znaci komanda _CHAIN_INTR u microsoft C-u. Treba
mi njen ekvivalentan oblik u TURBO C-u.
cccc.151pyramid,
-> #147, bulaja>> E uzese mi (necu imenovati ko, prepoznace se sam:) bas juce
>> Novell-ov SDK CD, tako da ces za neko detaljnije objasnjenje
>> morati da sacekas ili
Cekam... Uzgred, je l' moze neka detaljnija informacija o Novell SDK CD-u (da
li je to onaj SDK sa watcom-ovim compilerom?) i neka adresa gde se moze naci?
>> (tu je i Lantastic, koliko se secam i njega si trazio?:).
Da, da...
cccc.152postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: cccc
Date: Sun, 19 Mar 1995 13:49:46
-=> Reply to: "Ivan Petrovic" <=-
"P> Jel BC mora da, prilikom kompajliranja, pravi one ogromne *.sym
"P> fajlove?
Ako uzmes La Hey ekstenziju BC-a onda ne mora ;->>>>>
-=> MM <=-
... i *DId* rEaD tHE DoCS; ThaT'S WHy I'm conFuSeD!
* Origin: SETNet - Exodus, Beograd #137-477# from 22:00 to 09:00 (38:103/130)
cccc.153postmast,
From: NIKOLI05892D@BUEF31.ETF.BG.AC.YU (Nikolic Ivica)
Subject: Re: cccc
Date: Tue, 21 Mar 1995 09:21:59 GMT
In <sezam$cccc:01.047.1556@sezam> maksa@sezam.UUCP writes:
> >> Jel BC mora da, prilikom kompajliranja, pravi one ogromne
> >> *.sym fajlove?
>
> Ako ti smeta:
> Options, Compiler, Code generation - iskljuci Pre-compiled headers.
>
> (izgubices na brzini prevodenja)
Moze i bez gubitka na brzini. Tj., moguce je dobiti i jare i pare:
relativno mali .SYM fajl, sa kojim kompajliranje cak moze da bude i brze.
Metod se zasniva na koriscenju 'hdrstop' pragma direktive BC-a.
Svako ko je bar malo radio na C(++)-u primetio je da kompajler 90%
vremena trosi na kompajliranje fajlova poput windows.h, owl.h, tv.h, i
slicnih monstruma od po dvadesetak hiljada linija. Kao jedino resenje tada
se namece koriscenje prekompajliranih hedera.
Medjutim, tada se kao problem namece medjuzavisnot izmedju pojedinih
hedera. Kad god programer promeni sekvencu hedera koji se ukljucuju unutar
jednog .c(pp) fajla, ili promeni sadrzaj nekog hedera, kompajler ne proverava
da li ta promena utice na ostale hedere, vec ponovo isprevodi sve hedere
koji se iz tog fajla pozivaju, ali pri tome iz .SYM fajla ne brise stare
informacije koje su se ticale tog fajla. Zbog toga .SYM fajl ima tendenciju
stalnog rasta.
Drugi problem se javlja kada se pravi kompleksniji program sastavljen
iz vise modula. Tada kompajler u jedan .SYM fajl trpa informacije za svaki
modul posebno, iako je mozda redosled pozivanja hedera u svakom modulu isti.
Treba uociti da kompajler u .SYM fajlove trpa ne samo sistemske hedere,
nego i hedere koje sam programer pravi, iako kompajliranje ovih drugih traje
nesrazmerno krace.
Dobitak, koji se dobija koriscenjem '#pragma hdrstop' direktive, postize
se uz mali kompromis: u .SYM fajlove se upisuju samo prekompajlirani
sistemski hederi, a korisnikovi hederi, koji se po definiciji cesto menjaju,
se ne upisuju, cime je izbegnut efekat prevodjenja gomile hedera kad god se
izvrsi neka mala izmena u sopstvenom hederu.
Konacno, posle neophodnog i podugackog uvoda, evo i same metode:
Na pocetak svakog .c(pp) fajla treba staviti sve moguce i nemoguce
sistemske hedere koji ce ikada biti (ili nece biti) potrebni. Zatim treba
staviti jedno '#pragma hdrstop'. Vazno je da se IDENTICNA sekvenca stavlja
na pocetak svakog .c(pp) fajla. Pametnije resenje je da se ova sekvenca (bez
hdrstop pragme) stavi u jedan .H fajl, koji ce se zatim ukljucivati na pocetak
svakog .c(pp), a da se hdrstop pragma stavi odmah iza ukljucivanja tog
hedera. Posle '#pragma hdrstop' ukljucuju se, po potrebi, sopstveni hederi.
Naravno, opcija 'Precompiled headers' mora da bude ukljucena.
Dobitak, koji sam postigao na ovaj nacin, je prosto fantastican.
Zamislite projekat sastavljen iz tridesetak modula, iz svakog modula se poziva
barem windows.h ili owl.h, sa svom bulumentom hedera koja iz toga sledi, i
sa bar nekoliko sopstvenih hedera koji se ukljucuju u skoro sve module.
Bez koriscenja opisane metode, kompajliranje ispocetka celog programa, koje
je bilo neophodno posle svake promene na jednom od 'globalnih hedera, trajalo
je, brat bratu, desetak minuta (BC++ 3.1), jer su se za svaki modul windows.h,
owl.h i prateci hederi ponovo prevodili.
Posto sam pozivanja hedera prearanzirao na goreopisan nacin, vreme
kompajliranja celog programa svelo se na svega par minuta, jer su se windows.h,
owl.h i drugi sistemski hederi kompajlirali samo za prvi modul, a za sve
druge module koristile su se informacije iz .SYM fajla. Hederi koje sam ja
pisao prevodili su se za svaki modul posebno, ali to ne odnosi vise od
par sekundi po modulu.
I, na kraju, najlepsa stvar: .SYM fajl je narastao na nekih 800Kb, i tu
se zaustavio. Jos lepse, jedan isti .SYM fajl ostajao je neizmenjen po nekoliko
dana, i pored intenzivnog rada na projektu. I jos lepse od toga, jedan isti
.SYM fajl se moze koristiti za razne programe, samo trenutno ne mogu da se
setim kojom pragmom se definise ime .SYM fajla.
cccc.154postmast,
From: EKOVCIN@UBBG.ETF.BG.AC.YU (Milan Kovcin)
Subject: Citanje sa serijskog porta
Date: Tue, 21 Mar 1995 23:52:32 GMT
Potrebno mi je da na najlaksi nacin procitam podatke koji mi dolaze
na serijski port. Nije bitan jezik (asembler, c, basic, . . .).
Da li neko moze da mi pomogne. Odgovor je hitno potreban, a bilo bi
lepo kad bih dobio i kod.
Odgovore ostavite ovde ili na ekovcin@ubbg.etf
Unapred zahvalan
---
e-mail: ekovcin@ubbg.etf.bg.ac.yu
xmk@orao.etf.bg.ac.yu
cccc.156zeljkoj,
-> #154, postmast> Potrebno mi je da na najlaksi nacin procitam podatke koji mi
> dolaze na serijski port. Nije bitan jezik (asembler, c, basic,
Jedino u BASIC-u to možeš lako i elegantno da uradiš bez dodatnih biblioteka.
Evo primer kako se otvara port:
OPEN "COM2:2400,N,8,1" FOR RANDOM AS #1 LEN = 256
Posle LEN je veličina i/o buffera. Za mod treba staviti RANDOM ukoliko
želiš i da čitaš i da pišeš na port. Na početku su parametri komunikacije.
Nadam se da si ukapirao šta je šta.
Da napomenem da BASIC podržava samo COM1 i COM2. :)
Na port pišeš, na primer, ovako: PRINT #1, a$ (String a$ se šalje na port
otvoren pod brojem 1 - paziti da se taj broj i onaj u okviru OPEN-a slažu.)
Sa LOC(1) (staviti odgovarajući broj) dobijaš broj bajtova koji čekaju u
baferu da budu pročitani. Podatke čitaš sa INPUT$(broj_bajtova, hendl).
Evo primera kako čitaš sve što je stiglo na port otvoren pod brojem 1:
ModemInput$ = INPUT$(LOC(1), #1)
Na kraju port zatvaraš sa CLOSE hendl, tj. u ovom primeru CLOSE #1.
Inače, ne moraš non stop da čekaš na podatke sa COM porta. Postoje
i naredbe COM ON i ON COM GOSUB pomoću kojih instaliraš hendler za obradu
podataka sa COM porta tako da tvoj program može nesmetano da radi nešto
drugo, a da se procedura za obradu izvršava samo kad nešto stigne na port,
a posle automatski nastavi tamo gde se stalo.
Sve je ovo dosta dobro objašnjeno u helpu, a ovo što sam ja sada naveo je
samo jedan mali deo mogućnosti BASIC-a u radu sa COM portovima. Ima tu
još mnogo lepih i korisnih stvari. :))
cccc.157ikordic,
RE: Watcom
Koristi li neko Watcom 10.0? Ako tog nekog ne mrzi, bio bih zahvalan za
kratak komentar, posebno ako je u pitanju prebeg iz Borland/Microsoft
tabora. Nešto kao: zašto ste se odlučili na takav korak i da li se isplatio?
cccc.158jkpbvk,
Jel' moguce u SVGACC biblioteci namestiti da mouse kursor bude uvek
bele boje (ili bilo koje druge), bitno da moze da se menja.
Kad se promeni paleta boja i radi sa misem menja se naravno i boja kursora,
koliko vidim u nijednoj funkciji vezanoj za misa nema input za boju.
Jel' vidi neko resenje ?
cccc.159eotek,
-> #158, jkpbvk> koliko vidim u nijednoj funkciji vezanoj za misa nema input za
> boju. Jel' vidi neko resenje ?
i da ima, ne bi ti mnogo pomoglo, jer je paleta
promenjena, pa se na mestu napr. bele boje nalazi neka druga,
upravo ona koja farba strelicu. pretpostavljam da te stvar muci
prilikom bacanja slika na ekran. ako je tako, ja koristim jedno
via-mala-krsna resenje:
pod windows prikazem sliku (napr. sa wingif), i to tako da se
vide i title bar's (kod mene, standardne, plave boje, sa belim
slovima). onda ceo ekran snimim sa sctief, pa u naknadnoj obradi
odsecem visak. tako obradim sve slike i sve slike ce biti
_iste_ palete. to je dobro:
1) za ubrzavanje programa (nema potrebe za svaku sliku pozvati
gifgetpal, vec samo jednom);
2) prikaz slike preko slike je lepsi (ekran se ne resetuje/pocrni)
3) moze se bacati i vise razlicitih slika na ekran i -poseban
efekat-
4) ako ti zatreba imas i windows-like ekrane pod dosom, sa svim
kerefekama koje ti na osnovu toga mogu pasti na pamet.
P.S.
ima li neka dobra dusa neki yu font za svgacc, jos kad bi
bio juski ...
cccc.160vitez.koja,
-> #154, postmast#=> From: EKOVCIN@UBBG.ETF.BG.AC.YU (Milan Kovcin)
#=> Potrebno mi je da na najlaksi nacin procitam podatke
#=> koji mi dolaze na serijski port. Nije bitan jezik
#=> (asembler, c, basic, . . .). Da li neko moze da mi
#=> pomogne. Odgovor je hitno potreban, a bilo bi lepo kad
#=> bih dobio i kod.
Prijem podataka sa serijskog porta moguće je realizovati na više
načina. Pisanje sopstvenog interapt hendlera svakako nije
najlakši, ali jeste najuniverzalniji i najsigurniji način.
U sledećem fajlu imaš sve potrebne funkcije, u Cu. Kod nije
komentarisan, ali je dosta jasan i ovako.
Pre početka korišćenja funkcija moraš da instaliraš hendler sa
comm_install(int port);
i podesiš radne parametre sa, na primer:
comm_setup(2400, NPARITY, BIT8, STOP1); // 2400 8N1
Tada su ti na raspolaganju funkcije comm_putch, comm_getch, i još
neke.
Na kraju rada pozivaš
comm_remove();
i uklanjaš svoj interapt hendler.
section 1 of 1 of file comm.zip < uuencode 5.32 by R.E.M. >
begin 644 comm.zip
M4$L#!!0``@`(`"EAMAR(NP)!K@,``*L,```(````0T]-32Y#4%"-5EUOVS84
M?1^P_\!B6$#6WB;9+E!$4X#,<59A=AW(SLN&39`E.A)J2X9(N0WJ_/>1%$E]
M1W$>0I'W\IQ[>2YY?XJ3X)"'&/P>I,?CK]'-CS_P/P#.:1R".*$XR_(3!?!]
M>@C/.*!IAJ#GS1\>;MT_-\CJ,>>;>17OT@-\+QP`R!,2/R4X!$'D9X!0GV)+
MK84Q\7<'##D`__X:Q>SK'83"S(Z34YK1'10P?#ARG#L7H2L3H<(!`/(UID%4
M.`A4('^!3S"87(-X#TD2[O+]GMBV'#'+-*>GG'J[G#S;AE6ZJ1\^,/?O[7D@
M/!NTMI_<,9![_Z/01J-_D=6W@8(V.RUZ..LY-=7)_*4]M<NP_\5JY&9V#;+@
M+"C+_YA1[DBZRW+>@:.<?K:=S]X?C_<;Y^^%-8P=XKV?'^AU8T&RULEUYBRE
MB[6CD'%24<I+(:`XT1)DYW\X`,AGN'^O_HX^^>)E^$E+4.I'.U429%X#G01[
MOEZ9WL/:W;9"5$50F#B?>RPX<F&RNMW\U;*I9T.)MX8_&<:?#.-/WHP_;>!/
MA_&GP_C3-^//&OBS8?S9,/[L+?A:I!FF>9:`B5R1*E4JTL7BK'2)E`I>N6-@
M?+N_UROJ:K6?,.4CJ*@K"]*8'S=NV!9&I4I7<Q>-`;S;NA=WN[FL'[<3I.PU
M7S6X@CHG_]4HUL@K:[5:K34<ZKM+YLBHEJ9X*(0]BRD_%95)3AB'8U&V)S^+
MZ7,QWL64%"-"TQ/[ZJU>YN4?)2JW#^-S3-),%W/'U;R<BU/X:*@@I(_-&2%H
MFA\FAK'\35!K9:'<YFZY9,F5OE?&-\-@27O5_A.S5PXW-Q]1TTG$HB_PX@O6
MPD6PR-*%)^BB<F.]'BH4.S&PZ:O\G`5/2YU+^^;GFAHP66X&358;=XC)%.E3
M[7SR>U?UV]1\$C)\3,\80"[$BI[B/:RK^)UM(J7@7\S>.BS;HNY:,%ZI!<[I
MF(;XZ/$N)2<M4H43[,X<ZMXJI)DL*MWY=%4,XUUON=2$#;N/F^OT7KWCTE+\
MX_HUT:6R8<^!KK@,"U;UI)1^S<-ZPC2(VF=5+'L\$*MR@++Q(+:M6I#V"2J_
MHLR;C0[OS10W.=/1Q<@]*Q0ZKK=3+J@+KE%=:)4^3ZA,=Q=]'23;P*K:-)O$
MET976K3+JAF\L=>/6Q5"N5&C+14]7A!5W[.NF`B`0C_O"<V:1Q+IPR@(!)'-
MS48CW93S*HML^^'V<;-`(,0'_QE^,(R2E(BCS!]4D3,J_P-02P,$%``"``@`
MN&"V''(>0#M4`@``AP<```8```!#3TU-+DB%E%UOVC`4AN\K]3]8ZD6A0B@)
MT#%UF\17UVA`4))>;%,50>(4:Q!'MH/HS7[[;`<2VS0=$M*Q'[_O.3D^R0U*
MLP2F()IXB\7UU0V/40:K)<KB79%`\"7&&<+=[3=U+\%4[M0R=^$#]6<='5NA
MDPMJU73FN>_0FO.*[&CE^6'%K=[C4...P1V#]TS]3.=]4R^X48&[#.L*K8F1
M7Z=C(_M'VOZEULB\&`4_*FY;1F:-6N9S?Z3M7VIK'CX9=U8C?]J(IO-Y,WK2
MD#H?,[\1N7HRIT9S8ZIZ-5H8J*^H`AT-%)6![M5^3,/&&OTP``TU>L^AHR*M
MQ<O5R'?#G\K@6TJ_O$NJ7.[L@MH*';OA0'^E5&=.[PUJ:_2301V-#@VJ]#T(
MO97=F%=01Z=]M1^KT7,P4_CMWUOM71CYOCHIUG%8?B=0*C]D49SO"BK^UU>"
M5Y^T:++BW?H>@&ZWRX_#'84-)P3-$I0*6V4&E]'X^3%P?YV*&]J?]2O6L#.0
M<P,`96N&8E!D%+UF,`'Q=DT`B0^;(DU_UYXO'4"S1&XJ5B\/[UF@C)T=Z%>K
M<XZAB$\F5(GY?J--C/?[B`?BN(QS3.K%?DW__%_,T6X'$Z'"!<L+%FT*^B9U
M0@F/#)(,'#"2*DA(D3/0NL.[Y`!CADF[576^?=+(P]*>0E;D+9&-YA`F'9DX
M7Q/$WLIX@Q@M(\IPSE?M!]V!%Q1OI4/<[E1;M"4OXHXR4@K,!Y(*T8VSB,`]
M/L"6,.9;>YQ`7AWO2D'+O<JE1`DC9=G\"#Q[O$)1R_EX/6?_`%!+`0(4`!0`
M`@`(`"EAMAR(NP)!K@,``*L,```(``````````$`(`````````!#3TU-+D-0
M4%!+`0(4`!0``@`(`+A@MAQR'D`[5`(``(<'```&``````````$`(````-0#
>``!#3TU-+DA02P4&``````(``@!J````3`8`````
`
end
sum -r/size 5555/2423 section (from "begin" to "end")
sum -r/size 56617/1740 entire input file
cccc.161mjova,
-> #151, pyramid> Cekam... Uzgred, je l' moze neka detaljnija informacija o
> Novell SDK CD-u (da li je to onaj SDK sa watcom-ovim
> compilerom?) i neka adresa gde se moze naci?
nema na njemu watcoma, ali ima dosta zanimljivih stvari. postoje
razne biblioteke (za razne prevodioce) i puno helpova. disk ima nekih
180Mb, što i nije neka impozantna količina ;).
što se tiče asm api, ima jedno poglavlje o tome, ali nije baš
jednostavno to eksportovati van. ne znam zašto, ali javljaju se razne
greške, pa je uvek sadržaj nekompletan.
cccc.162pyramid,
-> #161, mjova>> sto se tice asm api, ima jedno poglavlje o tome, ali nije bas
>> jednostavno to eksportovati van. ne znam zasto, ali javljaju
>> se razne greske, pa je uvek sadrzaj nekompletan.
Je l' mozes pokusati da otstampas preko nekog spoolera (ili neke slicne
preko-stapa-i-kanapa metode) i da iz istog freeze-nes stampanje, i snimis ga
kao file?
cccc.163vbacko,
Dali neko moze da mi pomogne oko objasnjenja:
Koja je zamena u TURBO C-u za _CHAIN_INTR u MICROSOFT-u
Unapred zahvalan VBACKO
cccc.164mjova,
-> #162, pyramid> Je l' mozes pokusati da otstampas preko nekog spoolera
> (ili neke slicne preko-stapa-i-kanapa metode) i da iz
> istog freeze-nes stampanje, i snimis ga kao file?
probao sam sve, ali nema šanse. na žalost.
inače, disk ima nekih <180Mb - bedno, s obzirom na ostalih *praznih*
450Mb ;)
cccc.165pyramid,
-> #164, mjova>> probao sam sve, ali nema sanse. na zalost.
Nema veze... Iskombinovacu nekako... Znas li barem da mi kazes kako da posaljem
jednu porukicu po mrezi (verovatno se moze uraditi preko cirkularnih poruka)
tako da ih moj program prima i obradjuje, a klijenti koji nisu startovali moj
programcic da ih ne vide (ne samo nevide, vec i ctrl+enter me muci)...
Rec je o Netware-u 3.12...
>> inace, disk ima nekih <180Mb - bedno, s obzirom na ostalih
>> *praznih* 450Mb ;)
Ako je multi-session pa da nasnims jos jedno 3000 fontova, pa igara, par
hiljada slicica, itd. :)
cccc.166djelovic,
-> #163, vbacko> Dali neko moze da mi pomogne oko objasnjenja:
> Koja je zamena u TURBO C-u za _CHAIN_INTR u MICROSOFT-u
_chain_intr je funkcija koja prekida izvršenje tvoje interapt funkcije i
"uskače" u neku od originalnih, iz BIOS-a. Nešto kao GOTO u drugu funkciju, da
se izrazim poetično :).
Novi Borland C++ ima baš _chain_intr, ali je stari Turbo C na žalost nema.
Elem, možeš da uradiš dve stvari da bi je simulirao:
1. Da iz tvoje funkcije uradiš jedan far jmp direktno u interapt rutinu,
što je zapravo baš ono što _chain_intr i radi.
2. Da pozoveš potreban interapt pa da odmah posle toga uradiš jedno return.
P.S. Uz Borland C++ 3.1 je dolazio sors većine bibliotečkih funkcija, pa
verovatno i ove. Možda da nađeš nekoga ko ima 3.1 pa da prekopiraš i samu
funkciju?
cccc.167pyramid,
-> #166, djelovic>> 1. Da iz tvoje funkcije uradis jedan far jmp direktno u
>> interapt rutinu, sto je zapravo bas ono sto _chain_intr i
>> radi.
Ne valja ti ovo... Kada definises funkciju kao void interrupt kompajler odma'
napravi kod gde smesti sve registre... Morace prvo da poskida sve sa steka, pa
tek onda jmp.
>> 2. Da pozoves potreban interapt pa da odmah posle toga
>> uradis jedno return.
Ovo radi, ali ne u svim slucajevima. Npr. _chain_intr moze da se upotrebi za
int 21h jer bios interapt potrazi flag reg. na steku i promeni ga
(setuje/resetuje carry), a ova sema sa pozivanjem interapta pa return nece
promeniti flag reg...
Sve u svemu sistem bi mogao da bude sledeci:
napravi se rutina
void interrupt test() {
asm nop
}
- iz TD-a ili sl. prepisati sve sto se iza nop-a uradi
- upisati to na mesto gde treba da stoji _chain_intr
- upisati posle toga jmp oldvector
cccc.168vbacko,
-> #167, pyramid>>>Ne valja ti ovo... Kada definises funkciju kao void interrupt kompajler
odma'
>>>napravi kod gde smesti sve registre... Morace prvo da poskida sve sa steka,
pa
>>>tek onda jmp.
...a kako da poskidam sve sa steka !!!!
vbacko
cccc.169skerl,
bwcc.dll iz Borland C++ 4.5 (11-10-94)
Pozdrav,
Skerl.
bwcc.zipcccc.170jkpbvk,
Ň════════════════════════════════════Ş
│ PMODE/W v1.02 DOS Extender │
│ Replaces DOS/4GW in Watcom C/C++ │
├────────────────────────────────────┤
│ Features: │
│ ) Extender size less than 8k. │
│ ) Extender is internal to the EXE. │
│ ) 100% compatible with Watcom C. │
│ ) Fast execution. │
│ ) Free for non-commercial use. │
ď════════════════════════════════════ż
pmode.rarcccc.171pyramid,
-> #168, vbacko>> ...a kako da poskidam sve sa steka !!!!
Pa evo da se citiram:
>> Sve u svemu sistem bi mogao da bude sledeci:
>> napravi se rutina
>> void interrupt test() {
>> asm nop
>> }
>> - iz TD-a ili sl. prepisati sve sto se iza nop-a uradi
>> - upisati to na mesto gde treba da stoji _chain_intr
>> - upisati posle toga jmp oldvector
u sustini kod izgleda nesto kao:
asm pop ax
asm pop bx
asm pop cx
asm pop dx
asm pop si
....
ako je kompajliran za 8086, ili nesto kao:
asm leave
ako je kompajliran za 286/386...
Napravi ovu rutinicu za testiranje, udji u TurboDebuger, pritisni Alt+V,C i
dobices CPU window (linija u C-u, pa par linija u asembleru). Prepises na papir
sve linije posle 'nop' do linije 'iret', pa umesto iret stavis:
jmp oldvector
gde je oldvector promenljiva koja sadrzi stari int. vektor...
cccc.172jkpbvk,
-> #157, ikordic+| Koristi li neko Watcom 10.0?
Instalirao sam ga veceras i prvi utisci su dobri uz zamerku da nema H od helpa
nijedan doc fajl (sem za dos4gw extender)K, ama bas nista od helpa.
Prvo sam instalirao samo za DOS programe da bi se iznenadio da od 34 disketa
na koje staje za DOS je iskoristio nekih 6-7, posto je to bilo veoma brzo
odlucih da instaliram i za Windows, tu je vec malo vise trazio (nekih 15-20)
U install-u je jedino ostao OS/2 , znaci ostatak disketa njemu pripada. ;)
Kompajlira donekle istim speedom kao i BC 3.1.
Win programi su OK samo sto se moraju rucno instalirati i pored opcije
Create icons (valjda se misli na kreiranje grupe prvi put po ucitavanju win
kao u BC-u)
Toliko za prve utiske (2-3 sata :)
Za sada je OK, svi programi koje sam kompajlirao su prosli bez problema.
cccc.173postmast,
From: andrea@fon (Andrea Prunic)
Subject: unix+portovi
Date: Thu, 30 Mar 1995 00:15:55 GMT
Haj svima.
Treba mi pomoc oko komunikacije preko LPT i COM portova pod unix-om i
dos-om.
Naime, trebale bi mi nekakve univerzalne rutine za rad preko LPT i COM
porta za dos i za Linux+SCO+BSD, pisane u obicnom C-u (nista C++, jos
sam mali za to :))
Ako ne moze i za jedno i za drugo, onda bar za unix, jer za dos neka
resenja vec imam.
Ko moze da pomogne, moze da mi posalje gotov source za Linux pre svega
na andrea@fon.fon.bg.ac.yu a moze i ovde da mi da neki savet.....
Hvala unapred.
BTW, ovo saljem i u yu.os.unix, da bi bio siguran da ce i unix-ovci da
procitaju. Ako je nekom zasmetalo, izvinjavam se.
... Neko jos nije rekao:"Vama ne sme niko da iskljucuje struju!"
___ Blue Wave/QWK v2.12
cccc.174spantic,
-> #172, jkpbvk> Instalirao sam ga veceras i prvi utisci su dobri uz zamerku da nema H od
> helpa nijedan doc fajl (sem za dos4gw extender)K, ama bas nista od helpa.
Koristiš DEMO verziju ;) Watcom C++ 10.0 dolazi na CD-u ili na 61 disketi,
čiji zapis takođe imaš na CD-u.
cccc.175jkpbvk,
-> #174, spantic+| Koristis DEMO verziju ;) Watcom C++ 10.0 dolazi na CD-u ili na 61 disketi,
+|ciji zapis takode imas na CD-u.
Moguce, mada nigde ne pise da je demo, jesi siguran ?
Znam za ovo na 61 disketu, to je isto to samo za sve platforme.
Izasao je neki patch za Watcom C++ 10.0 koji bi trebalo da ima u sebi i
neku dokumentaciju koja se nije pojavila u verziji koju imam.
Za dan-dva cu da pribavim pa cu da javim o cemu se radi ;)
cccc.176postmast,
From: andrea@fon (Andrea Prunic)
Subject: unix+portovi
Date: Thu, 30 Mar 1995 00:15:55 GMT
Haj svima.
Treba mi pomoc oko komunikacije preko LPT i COM portova pod unix-om i
dos-om.
Naime, trebale bi mi nekakve univerzalne rutine za rad preko LPT i COM
porta za dos i za Linux+SCO+BSD, pisane u obicnom C-u (nista C++, jos
sam mali za to :))
Ako ne moze i za jedno i za drugo, onda bar za unix, jer za dos neka
resenja vec imam.
Ko moze da pomogne, moze da mi posalje gotov source za Linux pre svega
na andrea@fon.fon.bg.ac.yu a moze i ovde da mi da neki savet.....
Hvala unapred.
BTW, ovo saljem i u yu.os.unix, da bi bio siguran da ce i unix-ovci da
procitaju. Ako je nekom zasmetalo, izvinjavam se.
... Neko jos nije rekao:"Vama ne sme niko da iskljucuje struju!"
___ Blue Wave/QWK v2.12
cccc.177hobit,
-> #172, jkpbvk>
> Instalirao sam ga veceras i prvi utisci su dobri uz zamerku da nema H od
> helpa nijedan doc fajl (sem za dos4gw extender)K, ama bas nista od helpa.
> Prvo sam instalirao samo za DOS programe da bi se iznenadio da od 34
> disketa na koje staje za DOS je iskoristio nekih 6-7, posto je to bilo
Ako ide samo na 34 diskete onda je to "Limited version". Prava verzija koja
ide sa CD-a ima preko 50 disketa. Inace na CD verziji postoje kompletni helpovi
za sva okruzenja koja Watcom podrzava. Mozda su malo sturi ali postoje.
Inace ako se sve instalira zauzima preko 170MB na disku.
cccc.178vbacko,
-> #171, pyramid Sve si ti to lepo zamislio ali to kod mene ne radi. Ipak,
jako sam ti zahvalan na pokusaju da nesto ucinis. Jedino sto mogu
na kraju da uradim je da nabavim Microsoft C 6.0 i da iskompajliram
program u originalu. Ipak za kraj: ako imas rezidentnu osnovu
prilagodjenu TURBO C-u 2.0 (KOJA JE 100% IPRAVNA) bio bih ti
zahvalan da mi je prebacis...
Hvala na savetima PYRAMID, DJELOVIC
P.S. Kako je sve krenulo !
U racunarima 73 ima listing za rezidentnu rutinu u MSC 6.0. Malo
sam je obradio i ona sada radi i u TURBO C-u ali se program koji
ima realnu velicinu 33kb pod QEMM-om instalira kao da ima 44, a pod
HIMEM-om od 60kb do 179kb. Sta lise ovde desi, mozda ne bi bilo
lose objasniti !!!
cccc.179mzgrdja,
-> #177, hobitDa li neko ima informacije o IBM C++ kompajleru (IBM C Set++). Verzija za OS/2
zauzima 8 disketa, sto je u poredjenju sa Watcom-om izuzetno malo.
BTW, koji kompajler mi preporucujete za Warp (bez DOS i Windows podrske)
Pozdrav.
cccc.180djelovic,
-> #179, mzgrdja> BTW, koji kompajler mi preporucujete za Warp (bez DOS i Windows podrske)
Borland C++ for OS/2. Sličan je "običnom" Borland C++-u, ima kompatibilan
OWL tako da nećeš imati problema da se snađeš ili potražiš pomoć ako negde
zapne, i nudi fantastičnu stvar zvanu "Just in Time Debugging" - mogućnost da
startuješ program bez dibagera i da, ako program pukne, OS sam pozove u dibager
i namesti te na grešnu liniju.
cccc.181mdimitrijevic,
Nesto sam se zainteresovao za WATCOM C. Pitanje je koju verziju mi
preporucujete a da nije previse glomazna i naravno da podrzava protected mode i
ASM ( inline ) ???
Pozdrav,
Marjan
P.S. Moze neka verzija velicine Borland C++ 3.1 ( nju trenutno koristim ).
cccc.182mzgrdja,
-> #180, djelovicDa li mi mozes reci koja je aktuelna verzija BC++ for OS/2. Gde se moze naci ?
Da li je biblioteka OWL 1.0 ili OWL 2.0.
cccc.183aleck,
-> #182, mzgrdja>> Da li mi mozes reci koja je aktuelna verzija BC++ for OS/2. Gde se moze
Aktuelna verzija je 2.0,ako uspeš da je negde nađeš javi mi obavezno.
Normalno važi i obratno...
cccc.184ikordic,
-> #174, spanticRE: Watcom C 10.0
=> Koristiš DEMO verziju ;) Watcom C++ 10.0 dolazi na CD-u ili na 61
=> disketi, čiji zapis takođe imaš na CD-u.
E to, CD verzija me i zanima. Koristi li neko ovo čudo? Kako je urađen i
koliko je obiman njegov Help sistem?
cccc.185spantic,
-> #175, jkpbvk> Moguce, mada nigde ne pise da je demo, jesi siguran ?
Amato se ja samo malo šalim :)) I ta verzija je imala help,
ali je sasvim moguće da je mnogo manji od onog sa verzije 61,
jer su sami helpovi veoma obimni.
cccc.186jkpbvk,
-> #185, spantic+| Amato se ja samo malo salim :)) I ta verzija je imala help,
+| ali je sasvim moguce da je mnogo manji od onog sa verzije 61,
+| jer su sami helpovi veoma obimni.
Pa i imao si pravo jer na prvoj disketi nije bilo file_id.diz-a tako
da ga nisam pogledao medjutim sasvim slucajno sam pogledao zadnju
i tu ga je bilo i evo sta kaze :
╔═[ 34/34 ]═══════════════════[NTA]═╗
║ WATCOM C V. 10 LIMITED EDITION ║
║for DOS, Windows, Windows NT & OS/2║
╚═══════════════════════════════════╝
=/\/\= RőSC COURőERőNG '94 =/\/\=
Naravno odleteo je sa diska brze nego u Speed-u :))
Sledeca je naravno verzija koja ide na 61 disketu ;)
Inace PMODE/W koji sam slao neki dan ovde fenomenalno radi i programi
su mnogo brzi nego sa DOS4GW, ne treba da se ucitava naknadno nego se
linkuje u fajl i ne izbacuje nikakvu poruku.
Svako ko radi u Watcom-u obavezno treba da zameni dos4gw sa PMODE
cccc.187pyramid,
-> #178, vbacko>> program u originalu. Ipak za kraj: ako imas rezidentnu osnovu
>> prilagodjenu TURBO C-u 2.0 (KOJA JE 100% IPRAVNA) bio bih ti
>> zahvalan da mi je prebacis...
Ovo je za BC++, ali posto je deo za vezivanje napravljen u asm-u (TASM), ne bi
trebalo da bude problema...
tsr_c.arjcccc.188postmast,
From: lukija@galeb.etf.bg.ac.yu (Nebojsa Lukic)
Subject: TDW
Date: Sat, 1 Apr 1995 19:55:16 GMT
Imam problema sa Turbo Debuggerom iz BC 2.0.Kaze da ne moze da uchita
WINDEBUG.DLL.Ima li neko ideju?
--
*----------------------------------*
| Nebojsa Lukic |
| e-mail:lukija@galeb.etf.bg.ac.yu |
*----------------------------------*
cccc.189postmast,
From: andrea@fon (Andrea Prunic)
Subject: unix+portovi
Date: Thu, 30 Mar 1995 00:15:55 GMT
Haj svima.
Treba mi pomoc oko komunikacije preko LPT i COM portova pod unix-om i
dos-om.
Naime, trebale bi mi nekakve univerzalne rutine za rad preko LPT i COM
porta za dos i za Linux+SCO+BSD, pisane u obicnom C-u (nista C++, jos
sam mali za to :))
Ako ne moze i za jedno i za drugo, onda bar za unix, jer za dos neka
resenja vec imam.
Ko moze da pomogne, moze da mi posalje gotov source za Linux pre svega
na andrea@fon.fon.bg.ac.yu a moze i ovde da mi da neki savet.....
Hvala unapred.
BTW, ovo saljem i u yu.os.unix, da bi bio siguran da ce i unix-ovci da
procitaju. Ako je nekom zasmetalo, izvinjavam se.
... Neko jos nije rekao:"Vama ne sme niko da iskljucuje struju!"
___ Blue Wave/QWK v2.12
cccc.190vbacko,
-> #187, pyramidBas si frend, uz male dorade proradilo je !!!!
Hvala ti .
cccc.191dpredovic,
-> #78, vlatkoSubject: Re: Int 14
> Postoji li mogucnost da su interapti 14h 0..3 bagoviti, i postoji li
> nesto sto bih trebao znati o njima a nije opisano u Norton Guide-u ?
Ništa, osim da će ti u životu biti mnogo lakše bez njih. ;) Ništa bez
džaranja po portovima. Postoji jedna lepa mala shareware biblioteka: PCL.
Trebalo bi da postoji i negde na sezamu, a ako nema - viči.
BTW. Neki modemi imaju lep običaj da se zaglupe ako im pričaš, a DTR je
spušten. Da nije možda to?
cccc.192dpredovic,
-> #184, ikordicSubject: Re: Watcom C 10.0
> E to, CD verzija me i zanima. Koristi li neko ovo čudo? Kako je urađen i
> koliko je obiman njegov Help sistem?
Ja sam instalirao onu verziju od 34 diskete. Kod mene nije radio Win IDE, ali
pod dosom sve sasvim lepo fercera. Sasvim lep help sistem postoji i u toj
verziji - oko 3.5MB. Ne sećam se da sam nešto tražio, a da nisam pronašao.
cccc.193dpredovic,
-> #179, mzgrdja> Da li neko ima informacije o IBM C++ kompajleru (IBM C Set++). Verzija za
> OS/2 zauzima 8 disketa, sto je u poredjenju sa Watcom-om izuzetno malo.
> BTW, koji kompajler mi preporucujete za Warp (bez DOS i Windows podrske)
Ako gledaš Watcom 10, jeste, mnogo ga je... Ali 9.5 dolazi, koliko se sećam
na 9 disketa, a ako te interesuje samo OS/2 verovatno će da te traži samo
4-5 disketa.
cccc.195hobit,
Da li razmisljate o programiranju na OS/2 Warp?
Vec neko vreme tragam za dobrim alatom za tu svrhu. Posle vise
pokusaja moje iskustvo je sledece.
Verovatno svima prvo na um dolazi Watcom C/C++ 10.0 Kao programersko
okruzenje vec se dokazao za DOS i Win aplikacije. Watcom je kupio od IBM-a
kompletan set biblioteka potrebnih za razvoj kako obicnih tako i programa
koji rade pod PM-om i WPS-om. Mala nevolja je u kolicini literature koja ide
uz Watcom-ov CD. Sve je pisano za iskusne programere i u velikom delu stoji
da se pretpostavlja da programer vec zna osnove programiranja za PM i OS/2.
Takodje dibager voli da pravi probleme. Verovatno neki od upgrade-ova resava
ovaj
problem ali treba ih nabaviti ;)
Drugi na listi je original IBM-ov C/Set++ 2.0. Iako je pisan za OS/2 2.1
verziju odlicno se uklapa u Warp. Uz njega dolazi Browser, dibager, kao i
potreban kompajler. Zanimljivo je da uz disketnu verziju ne dolazi nmake kao
ni neke osnovne biblioteke. Oni su sastavni deo toolkita 2.1 koji ide posebno.
Posebno se instalira i WorkFrame (nesto kao IDE okolina). Toolkit ide uz Watcom
a workframe se moze naci u watcom-u 9.5 Nmake mozete naci na FFS-u. Kad se
prevazidju ove teskoce, radicete uz program koji donosi ogromnu kolicinu
C++ klasa za PM i OS/2, a i drugi alati su sasvim O.K. Posebno mi se svidja
dibager
koji je nema puno sminke ali sa programerske tacke gledista ima sve drugo.
Ako niste lenji a naucili ste da radite uz MS Visual alatke skinite sa FFS
Guidelines. Program je PD i omogucava vizuelnu proizvodnju programa.
U saradnji sa nekim od gore pomenutih kompajlera (za wat. 9.5 verziju)
generise C++ kod i sve potrebne resurse.
Kad se napravi korisnicki interfejs, samo klikom na ikonu se dobija
komentarisani C++ kod koji mozete dalje da nadogradjujete svojim kodom.
Ako kupite extra biblioteke dobicete i mogucnost povezivanja sa raznim tipovima
mreza, bazama podataka...
Program je u najmanju ruku fantastican ako se zna da je besplatan.
Pretpostavljam da je prava stvar IBM-ov VisualAge, ali njega nisam jos video.
Ps. Ne zaboravite i jednu sitnicu. Pisanje programa za OS/2 je drukcije u
odnosu
na klasicne DOS/Win aplikacije. Ako se zeli iskoristiti opertivni sistem do
kraja
treba znati mnogo sto sta u nitima, semaforima, pre-emptive multitaskingu i
slicnim
zezalicama. Literature je malo (bar kod nas), ali vremenom...
cccc.196ppekovic,
-> #195, hobit>> Drugi na listi je original IBM-ov C/Set++ 2.0. Iako je pisan
>> za OS/2 2.1 verziju odlicno se uklapa u Warp. Uz njega dolazi
>> Browser, dibager, kao i
Pored Watcom-a i C/Set++ tu je GNU C++ port za OS/2 koji se može
naći na FFS-u.
Paya
cccc.197hobit,
-> #196, ppekovic Pored Watcom-a i C/Set++ tu je GNU C++ port za OS/2 koji se može
naći na FFS-u.
Mozes li mi reci kakav je u odnosu na prva dva. Nemam bas nesto vremena
da ga skidam sa FFS-a ;)
cccc.198duzle,
-> #195, hobitRE: Programiranje pod OS/2 Warp
Neko je ovde spomenuo neki patch za Borland Pascal 7.0 kojim se pod BP7
proizvode OS/2 aplikacije. Interesuje me da li je to upotrebljivo
(pretpostavljam da nije, ali....) ?
Ognen
cccc.199postmast,
From: andrea@fon (Andrea Prunic)
Subject: unix+portovi
Date: Thu, 6 Apr 1995 22:26:33 GMT
Haj svima.
Ja vec pisah jednu molbu za pripomoc, al' niko nije odgovorio.
Daklem, da ponovim : treba mi neki source u C-u koji bi mogao da se
koristi za pristupanje (komunikaciju i sl.) preko COM portova na PC-u
pod Linuxom i SCO-om.
Posto me interesuje da to naucim kako radi, ne bih da dobijem neki .obj
spakovan u reply ili sl. vec normalan source u C-u (nista C++, jos ga ne
znam).
Naravno, komentari, objasnjenja i ostali help su pozeljni.
I jope' hvala.
... This is a computer eating tagline. Don't...CRUNCH CRUNCH....BURP!!
___ Blue Wave/QWK v2.12
cccc.200ppekovic,
-> #199, postmast>> Ja vec pisah jednu molbu za pripomoc, al' niko nije odgovorio.
>> Daklem, da ponovim : treba mi neki source u C-u koji bi mogao
>> da se koristi za pristupanje (komunikaciju i sl.) preko COM
>> portova na PC-u pod Linuxom i SCO-om.
Skini neki od komunikacionih programa ecu, xcomm, pcomm i pogledaj
po source-u. Ukratko, COM port otvaraš kao najobičniji fajl preko
odgovarajućeg device-a sa open( "/dev/tty??" ); zatvaraš sa close()
čitaš i pišeš sa read i write itd. Parametre komunikacije postavljaš
uz pomoć ioctl funkcije.
Paya
cccc.203postmast,
From: dragisha@hobbiton.CO.YU (Dragisa N. Duric)
Subject: Infrequently Asked Questions about C
Date: Fri, 14 Apr 1995 17:29:10 GMT
From: seebs@taniemarie.solon.com (Peter Seebach)
Newsgroups: comp.lang.c,comp.std.c,comp.lang.c.moderated
Subject: Annual IAQ Posting
Approved: seebs@taniemarie.solon.com
Keywords: IAQ, Infrequently, Asked, Questions.
Certain topics never (well, hardly ever) come up on this newsgroup.
They are stupid questions, to which the answers are immediately obvious,
but they would be more fun to talk about than these arcane details of
loop control.
This article, which is posted yearly, attempts to answer these questions
definitively, succinctly, and in such a way as to discourage further
discussion. The answers have been carefully checked for periodic accuracy,
and for blatant inaccuracy where relevant.
1. Null Statements
2. Arrays and Pointers
3. Memory Allocation
4. Expressions
5. ANSI C
6. C Preprocessor
7. Variable-Length Argument Lists
8. Boolean Expressions and Variables
9. Structs, Enums, and Unions
10. Declarations
11. Stdio
12. Library Subroutines
13. Lint
14. Style
15. Floating Point
16. System Dependencies
17. Miscellaneous (Fortran to C converters, YACC grammars, etc.)
Herewith, some infrequently-asked questions and their answers:
Section 1. Null Statements
1.1: What is this infamous null statement, anyway?
A: A null statement is an expression statement consisting solely
of the terminating semicolon. The optional expression is dropped.
It can be distinguished from any other statement by byte count
or study of side-effects.
1.2: How do I "get" a null statement in my programs?
A: In ANSI C, there are six types of statements; labeled statements,
compound statements, expression-statements, selection statements,
iteration statements, and jump statements. All of them, except
the jump and expression statments, are defined in terms of optional
preceeding text, and other statements. The jump statements are
never null statements. An expression statement is considered to
be "a null statement" if the optional expression part of it has
been left out. A null statement can appear on its own, or (most
frequently) as the statement body of an iteration statement. These
two null statements are equivalent, though neither of them is
equivalent to any non-null statement. [*]
You may accidentally get a null statement by deleting the body of
a non-null statement.
[*] Actually, they are functionally equivalent to a large set of
non-null statements, namely, those with no side-effects. However,
the FDA has yet to approve any such, as their lack of side effects
is conjectured, and not clinically proven. This applies only to
the ANSI standard, and not the ISO standard, as the FDA has no
jurisdiction outside the U.S.
1.3: Is there more than one null statement?
A: Sort of. You can use
;
or
0;
or
1;
- they will all act like a null statement. Only the first is
a "true" null statement (all bits zero). They are basically
equivalent. Note that (void *) 0; is a null statement of type
pointer to void, for instance.
1.4 But I thought { } was a null statement!
A: No. { statement-list[opt] } is a compound statement. An empty
block is not the same as a null statement, however, although it
can be used in many of the same places. It's really a null
block.
1.5 I use the statement
#define NULLSTMT(F) (F) ;
to allow me to cast a null statement to an appropriate type.
A: This trick, though popular in some circles, does not buy much.
The resulting code is illegal, and will not compile. This (in
the author's opinion) outweighs any arguable type consistency.
It may be more common in industrial code. If it becomes common
practice, C++ will probably legalize it.
1.6 I use the statement
#define NULLSTMT(F) (F) 0;
to allow me to cast a null statement to an appropriate type.
A: This trick will likely work, but think: what does it really buy
you? Mostly, it will indicate to even the most casual observer
that you are shakey on the concept of null statements, making it
harder for them to check your code.
1.7: But wouldn't it be better to use ';' (rather than '0;') in case
the value of 0 changes, perhaps on a machine with nonzero
no-op instructions?
A: No. The '0' of '0;' is not evaluated as an instruction, rather, it is
just ignored. The advantages of ';' over '0;' have only to do with
poor optimizers and savings of keystrokes.
1.8: Is a null statement a null pointer?
A: No. A null pointer is a pointer where all of the address bits
are zero (no matter what the segment bits are), and can be
obtained by typing '(char *) (int) 0'. A null statement is
not a pointer to anything. They are not interchangeable, although
you can combine them to get an effectively-null statement, such
as
NULL;
This does not buy you anything.
1.9: I'm still confused. I just can't understand all this null
statement stuff.
A: Follow these two simple rules:
1. When you don't want to do anything in source code, don't
write it.
2. If you need a null statement to round out an expression,
use an unadorned ';' to provide it.
3. Send large donations, checks, and money orders to the
author of the FAQ, or the moderator of the group, whichever
you prefer. Then, cross the top question off the FAQ,
answer the question at the bottom, and mail it to three
people. Within two weeks, you will receive 729 answers
to various questions! Do not break the chain; Emily
Postnews broke the chain, and now no one listens to her.
Section 2. Arrays and Pointers
2.1: I had the definition char a[6] in one source file, and in
another I declared extern char a[]. Why did it work?
A: The declaration extern char a[] simply matches the actual definition.
The type "array-of-type-T" is the same as "array-of-type-T."
Go ahead and use extern char a[]. (For greater portability, use
it in both files, not only in one of them.)
2.2: But I heard that char a[] was different from char a[6].
A: This is true. However, the declaration a[] is compatible with the
definition a[6].
2.3: So what is meant by the "equivalence of pointers and arrays" in
C?
A: Very little.
2.4: Then why are array and pointer declarations interchangeable as
function formal parameters?
A: Classism. We consider arrays "second class objects". They don't
vote, and they get treated as pointers. Additionally, they're
merely objects, not citizens. Marx wrote about this a lot.
2.6: Why doesn't sizeof properly report the size of an array which is
a parameter to a function?
A: Part of the ANSI conspiracy to restrict people to passing pointers;
this was undertaken after the first discovery that passing large
arrays recursively could cause crashes. Since then, with the passing
of MS-DOS, it has become a non-issue; since all serious machines
have virtual memory, you can pass as much data as you want on the
stack without detectable problems.
2.7: Someone explained to me that arrays were really just constant
pointers.
A: Cool. Someone I know says he saw Elvis in a local bar.
2.8: Practically speaking, what is the difference between arrays and
pointers?
A: About the difference between alcohol and marijuana; they have
different characteristics, and that's not a problem if you don't
mix them too carelessly.
2.9: I came across some "joke" code containing the "expression"
5["abcdef"] . How can this be legal C?
A: It was added to allow people to avoid the character constant
'f' which may not be available on some systems. (Actually, it's
a side-effect of the equivalence of arrays and pointers.)
Section 3. Memory Allocation
3.1: Why doesn't this fragment work?
char *answer
printf("Type something:\n");
gets(answer);
printf("You typed \"%s\"\n", answer);
A: The semicolon after 'answer' is missing.
3.2: I have a function that is supposed to return a string,
but when it returns to its caller, the returned string is
garbage.
A: You probably returned a pointer to a local array. That
doesn't work. Try using a temporary file, instead.
3.3: Why does some code carefully cast the values returned by malloc
to the pointer type being allocated?
A: In interrupt-riddled code, it may be necessary to cast values to
force the CPU to resolve pointer types.
3.4: You can't use dynamically-allocated memory after you free it,
can you?
A: Yes. However, what happens when you do is not clearly defined.
3.5: How does free() know how many bytes to free?
A: Interrupt 41h. On macs, amigas, and other "big-endian" processors,
that would be interrupt 14h; be wary of portability problems.
3.6: So can I query the malloc package to find out how big an
allocated block is?
A: Yup. Don't expect an answer though.
3.7: I'm allocating structures which contain pointers to other
dynamically-allocated objects. When I free a structure, do I
have to free each subsidiary pointer first?
A: No. You just have to keep track of them somewhere else also.
3.8: Was Proust's masterwork, _A Remembrance of Things Past_, the
basis for the C library's allocation scheme, based largely on
contextual analysis?
A: The standard does not specify an allocation scheme; the famous
author the allocation scheme is based on is implementation
specified. Proust is a common choice, however.
3.9: I have a program which mallocs but then frees a lot of memory,
but memory usage (as reported by ps) doesn't seem to go back
down.
A: You're probably not freeing the memory completely. Try replacing
free(foo);
with
free(foo);
free(foo);
free(foo);
in case the first free() frees the memory only partially.
(Unix wizards may recognize the parallel with syncing
three times before rebooting.)
Alternatively,
free(foo + 4); may free the remaining four bytes. (Before using
this, make sure realloc(foo, 0) returned 4).
Section 4. Expressions
4.1: Why doesn't this code:
a[i] = i++;
work?
A: You didn't declare either i or a.
4.2: Under my compiler, the code
int i = 7;
printf("%d\n", i++ * i++);
prints 49. Regardless of the order of evaluation, shouldn't it
print 56?
A: No. The only logical answer would be 81 - two postfix ++'s are
automatically converted to prefix.
4.3: I've experimented with the code
int i = 2;
i = i++;
on several compilers. Some gave i the value 2, some gave 3, but
one gave 4. I know the behavior is undefined, but how could it
give 4?
A: Because i is 2, the loop is executed twice.
4.4: People keep saying the behavior is undefined, but I just tried
it on an ANSI-conforming compiler, and got the results I
expected.
A: They were probably wrong. Flame them mercilessly. Be sure before
you do that your compiler is really* ANSI conforming, though. If
it turns out you were wrong, they get a legal claim on your firstborn.
4.5: Can I use explicit parentheses to force the order of evaluation
I want? Even if I don't, doesn't precedence dictate it?
A: No. To force order of evaluation, you must threaten it. Take the
comma operator hostage. Using it, you can force the other operators
to do what you want.
4.6: But what about the &&, ||, and comma operators?
I see code like "if((c = getchar()) == EOF || c == '\n')" ...
A: As noted, once you've captured the comma operator, the others
become docile.
4.7: If I'm not using the value of the expression, should I use i++
or ++i to increment a variable?
A: ++i. Only losers and idiots use i++. This is different if your
native language would idiomatically use "i increment", but in
English and related languages, you must use "++i". Note that
a modern program must use both, dependent on the current locale.
4.8: Why is i = ++i undefined?
A: Because it is unclear whether it is shorthand for
i = 42;
or
i = (char *) "forty two";
Given the ambiguity, the standards committee decided to leave it
undefined.
Section 5. ANSI C
5.1: What is the "ANSI C Standard?"
A: A whiny bunch of lusers who haven't written as many books as
Herbert Schildt.
5.2: How can I get a copy of the Standard?
A: ftp ftp.borland.com.
5.3: Does anyone have a tool for converting old-style C programs to
ANSI C, or vice versa, or for automatically generating
prototypes?
A: A router helps, but your best bet is still the band saw. Quick,
efficient, and powerful.
5.4: I'm trying to use the ANSI "stringizing" preprocessing operator
# to insert the value of a symbolic constant into a message, but
it keeps stringizing the macro's name rather than its value.
A: This is because "3" is not a legal integral constant in C - it's
a string constant.
5.5: I don't understand why I can't use const values in initializers
and array dimensions, as in
const int n = 5;
int a[n];
A: Because you're not using C++.
5.6: What's the difference between "char const *p" and
"char * const p"?
A: One " " character. There are some trivial differences having
to do with the distinction between a pointer to a constant, and
a constant pointer, but since you can cast either to a
(char *) it hardly matters.
5.7: Can I declare main as void, to shut off these annoying "main
returns no value" messages? (I'm calling exit(), so main
doesn't return.)
A: Certainly. You can also declare it as double. It may not
compile, or it may crash, but who cares?
5.8: Why does the ANSI Standard not guarantee more than six monocase
characters of external identifier significance?
A: Because none of the members of the committee had names over
six letters, or in which letters other than the first were
capitalized.
5.9: What is the difference between memcpy and memmove?
A: memmove moves memory, and memcpy copies it. memmove may not be
supported on machines without internal robot arms. Do not use
memmove while the machine is powered up - you can destroy your
memory.
5.10: Why won't the Frobozz Magic C Compiler, which claims to be ANSI
compliant, accept this code? I know that the code is ANSI,
because gcc accepts it.
A: The Frobozz Magic Company lies through its teeth. Consider:
does Flood Control Dam #3 actually control floods? Didn't
think so. The wands are excellent for making useless via
casts of Float, though.
5.11: Why can't I perform arithmetic on a void * pointer?
A: You're too big and clumsy. When you try to push the numbers
together, you lose your balance. Perhaps you should get some
angels from the rave over on pin 3.
5.12: What are #pragmas and what are they good for?
A: They are useful ways to eliminate compiler features which are not
helpful to your goals; contrast #utility, which introduces useful
compiler features, and #absolutist, which introduces those compiler
features believed to be right.
5.13: What does "#pragma once" mean? I found it in some header files.
A: It means that your program will only run once; it's used to create
"crippled demos".
5.14: People seem to make a point of distinguishing between
implementation-defined, unspecified, and undefined behavior.
What's the difference?
A: There isn't really one; people just enjoy flaming over nits.
(To be technical, one has a hyphen, one has a space, and one
is a single word.)
5.15: Is C an acronym?
A: Yes, it stands for "C". It's another of those funky recursive
acronyms.
Section 6. C Preprocessor
6.1: How can I use a preprocessor #if expression to tell if a machine
is big-endian or little-endian?
A: #ifdef __BIG_ENDIAN should work on all known machines; Borland
defines it.
6.2: I've got this tricky processing I want to do at compile time and
I can't figure out a way to get cpp to do it.
A: Poor baby.
6.3: How can I list all of the pre#defined identifiers?
A: #define __ALL_CPP_IDS - put this in a source file, and run it
through your C preprocessor.
6.4: How can I write a cpp macro which takes a variable number of
arguments?
A: #utility varargs define ...
6.5: Shouldn't the following code:
#define ROSE 1
#define CHRYSANTHEMUM 2
#define RHODODENDRON 3
#define WATER_LILY 4
printf("%d\n", CHRYSATHNEMUM);
print "2"?
A: You misspelled CHRYSANTHEMUM. Use abbreviations for long flower
names in C code.
Section 7. Variable-Length Argument Lists
7.1: How can I write a function that takes a variable number of
arguments?
A: #utility varargs int foo()
7.2: How can I write a function that takes a format string and a
variable number of arguments, like printf, and passes them to
printf to do most of the work?
A: Redefine printf; the call to "printf" inside yours will be
resolved to the library version, because the C language doesn't
allow recursion.
7.3: How can I discover how many arguments a function was actually
called with?
A: _args is an external integer constant. It evaluates to three
times the number of arguments the current function was called
with. You can then look at
_argdata[args] to get the address of the last arg,
_argdata[args - 1] to get the size of the last arg, and
_argdata[args - 2] to get the type of the last arg (as an int).
N.B. You *MUST* not refer to _args or _argdata between
the ()'s of a function call; their value will be
indeterminate. Use temporary storage.
7.4: Why doesn't
printf("hello, ", "world!", '\n');
work? I thought printf() took a variable number of arguments.
A: It will probably work some of the time; the number of arguments
used by printf() may vary.
Section 8. Boolean Expressions and Variables
8.1: What is the right type to use for boolean values in C? Why
isn't it a standard type? Should #defines or enums be used for
the true and false values?
A: int (*)(int, char **) makes a good boolean type. You can use
"main" for true, and "exit" for false. On some compilers, you
may need to cast exit() to an appropriate type.
8.2: Isn't #defining TRUE to be 1 dangerous, since any nonzero value
is considered "true" in C? What if a built-in boolean or
relational operator "returns" something other than 1?
A: Yes. In fact, my aunt was killed by a true value other than one.
However, even more dangerous is defining true to be 0x256.
(All kidding aside, folks, the stupidist programming error I ever
saw had to do with
#define IS_TRUE(x) ((x) & 0x256) - it was intended to help the
programmer work with Fortran, which had a non-1 true value.)
Section 9. Structs, Enums, and Unions
9.1: What is the difference between an enum and a series of
preprocessor #defines?
A: The enum doesn't require the preprocessor.
9.2: I heard that structures could be assigned to variables and
passed to and from functions, but K&R I says not.
A: K&R I was wrong; they hadn't actually learned C very well before
writing the book. Later, Ritchie got a job at Bell Labs, and worked
closely with the authors of C, allowing the 2nd edition of the book
to be much more accurate.
9.3: How does struct passing and returning work?
A: The structures are put into the low part of the VGA card's VRAM.
They are then removed before the next video update. This is why
struct passing was not supported for a long time; VGA cards were
prohibitively expensive.
9.4: Why can't you compare structs?
A: Compare them to what? A summer's day?
9.5: How can I read/write structs from/to data files?
A: Loop with putchar. Be careful; if your machine uses signed chars
by default, all of the sign bits in your structure elements will
be reversed.
9.6: How can I determine the byte offset of a field within a
structure?
A: It's generally 4 times the number of members of the structure.
It may be more or less on some machines.
9.7: How can I access structure fields by name at run time?
A: foo."name" should work. You may need to overload the . operator,
which, in turn, may overload your C compiler.
9.8: Why does sizeof report a larger size than I expect for a
structure type, as if there was padding at the end?
A: Because there's padding at the end. *DUH*.
9.9: My compiler is leaving holes in structures, which is wasting
space and preventing "binary" I/O to external data files. Can I
turn off the padding, or otherwise control the alignment of
structs?
A: The holes were left by bullets; your computer has probably been
in a serious firefight.
9.10: Can I initialize unions?
A: Depends. They may go on strike when provoked. Luckily, if your
program involves air traffic control, the ISO standard guarantees
that Ronald Reagan will fire any unions that go on strike, and
replace them with structs, which should be close enough.
9.13: How can I pass constant values to routines which accept struct
arguments?
A: Try foo((struct foo) 3).
Section 10. Declarations
10.1: How do you decide which integer type to use?
A: Flip a coin. Heads are short, tails are long, and the edge is int.
10.2: What should the 64-bit type on new, 64-bit machines be?
A: extern volatile short auto char.
10.3: If I write the code
int i, j;
can I assume that (&i + 1) == &j?
A: Only sometimes. It's not portable, because in EBCDIC, i and j are
not adjacent.
10.4: What's the best way to declare and define global variables?
A: In headers; this way, you can get link errors when you include the
same header twice.
10.5: What does extern mean in a function declaration?
A: It refers to a variable which is not actually in your program.
10.6: I finally figured out the syntax for declaring pointers to
functions, but now how do I initialize one?
A: With the assignment operator. You were perhaps expecting
a screwdriver?
10.7: I've seen different methods used for calling through pointers to
functions. What's the story?
A: There is no story. Nothing to see. Move along.
10.8: What's the auto keyword good for?
A: Declaring vehicles.
Section 11. Stdio
11.1: What's wrong with this code:
char c;
while((c = getchar()) != EOF)...
A: It's stupid. It contains an obvious bug.
11.2: How can I print a '%' character in a printf format string? I
tried "\%" but it didn't work.
A: Break the '%' sign out. i.e.,
fprintf("foo " "%" "%d\n", foo);
11.3: Why doesn't the code scanf("%d", i); work?
A: You probably didn't include <stdio.h>
11.4: Once I've used freopen, how can I get the original stdout (or
stdin) back?
A: Call main() - the environment will be restored.
11.5: Why won't the code
while(!feof(infp)) {
fgets(buf, MAXLINE, infp);
fputs(buf, outfp);
}
work?
A: Because the end of file character is not detected on files named
"infp". (Introverted-iNtuitive-Feeling-Perceptive, that is.) Also,
it may be that the file was opened in text mode, where an end of
file is read as a capital 'Z' on most machines, and feof() only
looks for 'control Z'.
11.6: Why does everyone say not to use gets()?
A: Because they're trying to spoil your fun. gets() can make an
otherwise droll and predictable program a lot more exciting.
11.7: Why does errno contain ENOTTY after a call to printf?
A: Because stdout is not a mammal.
11.8: My program's prompts and intermediate output don't always show
up on the screen, especially when I pipe the output through
another program.
A: Have you turned your monitor on?
11.9: How can I read one character at a time, without waiting for the
RETURN key?
A: Ask the user to press enter after hitting a single character.
11.10: People keep telling me that getch() is not standard, but my C
compiler has it. Are they wrong?
A: They've been programming more than ten years. You haven't. Draw
your own conclusions. That's right! They hadn't noticed it.
No doubt their compilers have it too, and its behavior is identical
everywhere else in the world, also. That would explain everything.
11.11: What does it matter that getch() isn't standard; it works, doesn't
it?
A: Well, that would depend on the definition you're using for "works".
11.12: I tried to port some code from a PC to a unix machine, and now it
crashes immediately on startup. It isn't using getch() - it's
reading directly from the keyboard. How can this be wrong?
A: This is why we keep telling you non-standard things don't work;
because they don't.
11.13: How can I redirect stdin or stdout to a file from within a
program?
A: ececlv("main()" "> file", argv);
11.14: How can I recover the file name given an open file descriptor?
A: fname(fd).
11.15: How do I open Flood Control Dam #3?
A: PUSH THE YELLOW BUTTON.
TURN THE BOLT WITH THE WRENCH.
[You must have the wrench, first.]
Section 12. Library Subroutines
12.1: How can I convert numbers to strings (the opposite of atoi)? Is
there an itoa function?
A: There's frequently an itoa function. Better yet, write your own;
it'll be good practice. On some implementations, (char *) x;
will convert x to a string.
12.2: How can I get the current date or time of day in a C program?
A: fprintf(stderr, "please enter the current time and date...");
fflush(stderr);
gets(stdin);
12.3: I need a random number generator.
A: Count errors in Herbert Schildt's C books. No one has detected
any consistent pattern.
12.4: How can I get random integers in a certain range?
A: random(n) returns random numbers between n and INT_MAX.
12.5: Each time I run my program, I get the same sequence of numbers
back from rand().
A: This is so your results will be reproducible.
12.6: I need a random true/false value, so I'm taking rand() % 2, but
it's just alternating 0, 1, 0, 1, 0...
A: That seems pretty random to me.
12.7: I need some code to do regular expression matching.
A: So do I. Let me know if you find some.
12.8: I read through the standard library, but there's no function
to multiply two floating point numbers! Help!
A: Many C compilers offer an extension "mult" to do just this.
If your compiler doesn't, just hang tight; ANSI is likely to
add it in the next revision.
For now, you can try
float mult(float m, n)
{
float i = 0, j = 0;
for (i = 0; i < n; ++i)
j += m;
return j;
}
which is fine as long as n is an integer.
12.9: How do I get past the snake?
A: Release the bird. You will have to drop the rod to get the
bird in the cage.
Section 13. Lint
13.1: I just typed in this program, and it's acting strangely. Can
you see anything wrong with it?
A: Yes. There's too much lint in it. You should get a shop vac.
13.2: How can I shut off the "warning: possible pointer alignment
problem" message lint gives me for each call to malloc?
A: Don't run lint.
13.3: Where can I get an ANSI-compatible lint?
A: There is an LCLint package, but it depends on a garbage collecting
cccc.205niklaus,
-> #79, jkpbvkSubject: Re: Search problem
(:> +đ Koliko vidim, problem je sto se indeks i premota skroz do'm, cim
(:> +đ se prepozna prvi niz koji odgovara semi 'b8 ?? ?? 50 e8'. Time se ne
(:> +đ obezbeduje povratak na indeks i+1 radi sledece provere. Slican
(:> +đ nastupa i u 'fseek' varijanti (ne pomaze ti 'yes' fleg kada
(:> +d je na kraju procedure).
(:> +đ Resenje problema bi bilo u uvodenju pomocne promenljive, koja bi
(:> +đ se koristila za pomeranje kroz bafer 'b1' (umesto onih i=i+? bilo bi
(:> +đ pom=pom+?). Naravno, na pocetku prve petlje islo bi pom=i.
(:>
(:> Probao sam to i ranije ali ne pomaze , jesi li ti probao to ili si
(:> ovako na prvi pogled video da je u tome stvar ?
(:> Ako jesi i radi , napisi taj mali delic programa.
Izvinjavam ti se što ti sam napravio ofset od mesec dana...
Ispiti...
Elem, ako te ne mrzi ponovo mi pošalji (ključni deo) listing(a), jer
sam pre ispitnog roka 'pretabao' bazu, da ne bi imao šta da čitam, sem
knjiga. (;
Ovako, sa distance i na osnovu sećanja, mogu ti samo reći sledeće:
Problem bio u tome što se po prepoznavanju početka segmenta koji
odgovara opisu traženog stringa, i nakon obrade tog segmenta (u kojoj
ustanovljavaš da si nešto našao ili ne), ne vraćaš na i+1 mesto radi
provere da li i sledeći bajt predstavlja početak segmenta.
Pišem po sećanju...
(: Sean :)
cccc.206jkpbvk,
-> #205, niklaus+| Elem, ako te ne mrzi ponovo mi posalji (kljucni deo) listing(a), jer
+| sam pre ispitnog roka 'pretabao' bazu, da ne bi imao sta da citam, sem
+| knjiga. (;
Procitaj poruku broj 8.75
Inace poslao je neko resenje u C++
cccc.208niklaus,
-> #206, jkpbvk(:> +đ Elem, ako te ne mrzi ponovo mi posalji (kljucni deo) listing(a), jer
(:> +đ sam pre ispitnog roka 'pretabao' bazu, da ne bi imao sta da citam, sem
(:> +đ knjiga. (;
(:>
(:> Procitaj poruku broj 8.75
(:> Inace poslao je neko resenje u C++
Video sam. (:
Sada možeš da biraš - C ili C++.
Suština je što si morao da posle svake (ne)uspešne potrage za 'pattern'-om
da se vratiš na karakter posle prethodnog početka, što tvoj početni program
nije baš uvek radio...
Nadam se da su tvoje muke nestale... (:
(: SeanŐ :)