/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Fra dos til linux
Fra : Heine Laursen


Dato : 19-06-02 07:37

Hejsa NG.

For ca. et halvt aar siden, programmerede jeg lidt i c, siden har jeg
ikke programmering. Men nu har jeg saa faaet den ide at jeg vil porte
disse smaa programmer til linux. Efter et stykke tids googlen fant jeg
en erstatning for conio.h i curses.h Og det virker da ogsaa fint. Men
jeg mangler nu ogsaa en erstatnint for getch() fra dos.h Google viste
mig da ogsaa frem til nogne erstatninger. Men jeg kan knagme ikke faa
dem til at virke. Saa er der nogen her der kender en erstatning for
getch() til linux?

--
Mvh
Heine Laursen

 
 
Mikkel Bjerg (19-06-2002)
Kommentar
Fra : Mikkel Bjerg


Dato : 19-06-02 07:53

Heine Laursen wrote:
>
> Hejsa NG.
>
> For ca. et halvt aar siden, programmerede jeg lidt i c, siden har jeg
> ikke programmering. Men nu har jeg saa faaet den ide at jeg vil porte
> disse smaa programmer til linux. Efter et stykke tids googlen fant jeg
> en erstatning for conio.h i curses.h Og det virker da ogsaa fint. Men
> jeg mangler nu ogsaa en erstatnint for getch() fra dos.h Google viste
> mig da ogsaa frem til nogne erstatninger. Men jeg kan knagme ikke faa
> dem til at virke. Saa er der nogen her der kender en erstatning for
> getch() til linux?

På den linux maskine jeg sidder på i øjeblikket er getch en del af
curses biblioteket
--
MVH

Mikkel Bjerg

Heine Laursen (19-06-2002)
Kommentar
Fra : Heine Laursen


Dato : 19-06-02 08:12

In article <3D102A3C.8EC72D39@daimi.au.dk>, Mikkel Bjerg wrote:
> PŽå den linux maskine jeg sidder pŽå i Žøjeblikket er getch en del af
> curses biblioteket

Hmm saa er det maaske ikke getch der er problemet.

jeg faar denne fejlmeddelse!

[heine@BadAssMachine Heine]$gcc BIN.C
/tmp/cc7csybY.o: In function `output(void)':
/tmp/cc7csybY.o(.text+0x19d): undefined reference to `stdscr'
/tmp/cc7csybY.o(.text+0x1a2): undefined reference to `wgetch'
collect2: ld returned 1 exit status
[heine@BadAssMachine Heine]$

Jeg smider lige min kode ind her

#include <stdio.h>
#include <curses.h>

//Dos function
//#include <dos.h>

// erstatning for clrscr
void clrscr(void);
void indtastning(void);
void omregning();
void output();

int heltal, heltal2, antal_loop;
float dec;
int resultat[100];

main()
{
//int i = 0;
//while(i != 101)
//   {
//   resultat[i] = '/';
//   i++;
//   }
clrscr();
indtastning();
omregning();
output();
return 0;

}

void indtastning()
{
printf("Indtaste det tak du vil omregne.");
scanf("%d", &heltal);
heltal2 = heltal;
}
void omregning()
{
int i = 0;
while((heltal != 1 )&&( i !=100))
{
dec = heltal;
dec = dec / 2;
heltal = heltal / 2;
if(dec == heltal)
   {
    resultat[i] = 0;
   }
else
   {
    resultat[i] = 1;
   }
i++;
}
resultat[i] = 1;
antal_loop = i;
}

void output()
{
int i;
printf("\n%d omregnet til bin‘r : ", heltal2);
while(antal_loop != -1)
{
printf("%d", resultat[antal_loop]);
antal_loop--;
}
getch();
printf("\n");
}

//erstatning for clrscr
void clrscr()
{
int a[80];
printf("\033[2J");
printf("\033[0:0f");
}

Mikkel Bjerg (19-06-2002)
Kommentar
Fra : Mikkel Bjerg


Dato : 19-06-02 08:18

Heine Laursen wrote:
>
> In article <3D102A3C.8EC72D39@daimi.au.dk>, Mikkel Bjerg wrote:
> > P?å den linux maskine jeg sidder p?å i ?øjeblikket er getch en del af
> > curses biblioteket
>
> Hmm saa er det maaske ikke getch der er problemet.
>
> jeg faar denne fejlmeddelse!
>
> [heine@BadAssMachine Heine]$gcc BIN.C
> /tmp/cc7csybY.o: In function `output(void)':
> /tmp/cc7csybY.o(.text+0x19d): undefined reference to `stdscr'
> /tmp/cc7csybY.o(.text+0x1a2): undefined reference to `wgetch'
> collect2: ld returned 1 exit status
> [heine@BadAssMachine Heine]$
>

Det kunne tyde på at du ikke får linket men ncurses, prøv det her:

gcc BIN.C -lncurses
--
MVH

Mikkel Bjerg

Heine Laursen (19-06-2002)
Kommentar
Fra : Heine Laursen


Dato : 19-06-02 09:13

In article <3D10301D.C13E062D@daimi.au.dk>, Mikkel Bjerg wrote:
> Heine Laursen wrote:
>>
>> In article <3D102A3C.8EC72D39@daimi.au.dk>, Mikkel Bjerg wrote:
>> > P?å den linux maskine jeg sidder p?å i ?øjeblikket er getch en del af
>> > curses biblioteket
>>
>> Hmm saa er det maaske ikke getch der er problemet.
>>
>> jeg faar denne fejlmeddelse!
>>
>> [heine@BadAssMachine Heine]$gcc BIN.C
>> /tmp/cc7csybY.o: In function `output(void)':
>> /tmp/cc7csybY.o(.text+0x19d): undefined reference to `stdscr'
>> /tmp/cc7csybY.o(.text+0x1a2): undefined reference to `wgetch'
>> collect2: ld returned 1 exit status
>> [heine@BadAssMachine Heine]$
>>
>
> Det kunne tyde på at du ikke får linket men ncurses, prøv det her:
>
> gcc BIN.C -lncurses

Saa kan jeg compile
Men naar jeg kaere programmet ser det saadan ud!
Indtaste det tak du vil omregne.10

10 omregnet til binr : 1010
Segmentation fault
[heine@BadAssMachine bin]$echo $?
139
[heine@BadAssMachine bin]$

--
Mvh
Heine Laursen

Byrial Jensen (19-06-2002)
Kommentar
Fra : Byrial Jensen


Dato : 19-06-02 16:08

Heine Laursen <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> skrev:
> Saa kan jeg compile
> Men naar jeg kaere programmet ser det saadan ud!
> Indtaste det tak du vil omregne.10
>
> 10 omregnet til binr : 1010
> Segmentation fault

Hvordan ser din kode ud?

Heine Laursen (19-06-2002)
Kommentar
Fra : Heine Laursen


Dato : 19-06-02 16:55

In article <slrnah17ja.1am.bjensen@ask.ask>, Byrial Jensen wrote:
> Heine Laursen <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> skrev:
>> Saa kan jeg compile
>> Men naar jeg kaere programmet ser det saadan ud!
>> Indtaste det tak du vil omregne.10
>>
>> 10 omregnet til binr : 1010
>> Segmentation fault
>
> Hvordan ser din kode ud?

Se
Message-ID: <slrnah0bf3.1g0.heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk>

--
Mvh
Heine Laursen

Byrial Jensen (19-06-2002)
Kommentar
Fra : Byrial Jensen


Dato : 19-06-02 18:09

Heine Laursen <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> skrev:
> In article <slrnah17ja.1am.bjensen@ask.ask>, Byrial Jensen wrote:
>>
>> Hvordan ser din kode ud?
>
> Se
> Message-ID: <slrnah0bf3.1g0.heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk>

Nå for Søren. Jeg troede at det var din kode før portering til
curses.

Ved brug af curses-biblioteket skal du være opmærksom på:

- curses-funktioner bør ikke blandes med standard-i/o-funktionerne
fra <stdio.h>

- curses skal initialiseres med initscr() før brug af input- eller
output-funktioner. (Jeg tror at det var pga. manglende
overholdelse af dette at du fik en core dump).

- curses skal afsluttes med endwin() før kontrol afgives. Det gælder
også ved suspendering (ctrl-z) af programmet.

Her er lidt kode. Bemærk at det ikke tjekker retur-værdier fra de
kaldte curses-funktioner. Det må du selv sætte ind. Der er glimrende
man-sider til alle funktioner og en oversigt på siden til ncurses.

#include <curses.h>

void indtastning(void);
void omregning();
void output();

int heltal, heltal2, antal_loop;
float dec;
int resultat[100];

int main()
{
initscr(); /* Initialiser curses */
cbreak(); /* Slå linjebuffering fra */
clear(); /* Slet skærm */
indtastning();
omregning();
output();
endwin(); /* Retabler terminal-indstillinger */
return 0;
}

void indtastning()
{
printw("Indtast det tal du vil omregne: ");
refresh(); /* Opdater skærm */
scanw("%d", &heltal);
heltal2 = heltal;
}
void omregning()
{
int i = 0;
while((heltal != 1 )&&( i !=100))
{
dec = heltal;
dec = dec / 2;
heltal = heltal / 2;
if(dec == heltal)
   {
    resultat[i] = 0;
   }
else
   {
    resultat[i] = 1;
   }
i++;
}
resultat[i] = 1;
antal_loop = i;
}

void output()
{
int i;
printw("\n%d omregnet til binær: ", heltal2);
while(antal_loop != -1)
{
printw("%d", resultat[antal_loop]);
antal_loop--;
}
refresh(); /* Opdater skærm */
getch();
}

Heine Laursen (19-06-2002)
Kommentar
Fra : Heine Laursen


Dato : 19-06-02 20:45

In article <slrnah1emi.1hm.bjensen@ask.ask>, Byrial Jensen wrote:

> Ved brug af curses-biblioteket skal du være opmærksom på:
>
> - curses-funktioner bør ikke blandes med standard-i/o-funktionerne
> fra <stdio.h>

Det viste jeg ikke. Jeg saegte paa: linux c clrscr og fik at vide der
skulde includes curses.

> - curses skal initialiseres med initscr() før brug af input- eller
> output-funktioner. (Jeg tror at det var pga. manglende
> overholdelse af dette at du fik en core dump).

Det virker iverfald nu.

> - curses skal afsluttes med endwin() før kontrol afgives. Det gælder
> også ved suspendering (ctrl-z) af programmet.

Den forstod jeg ikke helt. men det er vel noget man curses kan forklare

<snip kode>

Tusend tak for hjaelpen. Jeg var elers fuldstaendig lost.
Saa kan jeg gaa igang med at porte andre af mine dos progys.

Ps. Der skulde vel ikke vaere en der kender genvejen til compile i emacs?
det er saa traels at skulde M-x compile hele tiden.

--
Mvh
Heine Laursen

Jonas Meyer Rasmusse~ (19-06-2002)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 19-06-02 23:05

"Heine Laursen" <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> wrote in
message news:slrnah1nk4.1g0.heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk...
> Ps. Der skulde vel ikke vaere en der kender genvejen til compile i emacs?
> det er saa traels at skulde M-x compile hele tiden.

Du laver vel bare en selv, ved at tilføje noget lignende:
(global-set-key "\C-cc" 'compile)
i din .emacs

mvh Jonas




Byrial Jensen (19-06-2002)
Kommentar
Fra : Byrial Jensen


Dato : 19-06-02 23:57

Heine Laursen <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> skrev:
> In article <slrnah1emi.1hm.bjensen@ask.ask>, Byrial Jensen wrote:
>
>> - curses skal afsluttes med endwin() før kontrol afgives. Det gælder
>> også ved suspendering (ctrl-z) af programmet.
>
> Den forstod jeg ikke helt. men det er vel noget man curses kan forklare

Cursus ændrer på indstillingerne for terminalen som programmet kører
i. Dette er f.eks. nødvendigt for at slå linjebuffering fra i
terminalen således at tastaturet kan aflæses før der er trykket
"retur".

(Terminalindstillingerne kan for øvrigt også kontrolleres direkte ved
brug af funktionerne tcgetattr() og tcsetattr() hvis man ikke vil have
getchar() og venner fra <stdio.h> til at vente på "retur". Så man
behøver ikke at bruge curses for bare at gøre dette).

Curses-funktionen endwin() retablerer de originale
terminal-indstillinger, så det vigtig at kalde den funktion før et
curses-program afsluttes. Derfor bør curses-programmer have en
signal-handler som kan fange SIGTSTP (ctrl-z) og SIGINT (ctrl-c) og
sørge for at endwin() kaldes før programmet suspenderes eller
afbrydes.

Skulle man stå med en terminal som reagerer mærkeligt efter et dårligt
afsluttet curses-program, kan default-indstillingerne for øvrigt også
retableres med reset(1).

Bent Wagner (19-06-2002)
Kommentar
Fra : Bent Wagner


Dato : 19-06-02 08:57

Heine Laursen <heine@0x83a4919e.arcnxx9.adsl-dhcp.tele.dk> wrote:

>For ca. et halvt aar siden, programmerede jeg lidt i c, siden har jeg
>ikke programmering. Men nu har jeg saa faaet den ide at jeg vil porte
>disse smaa programmer til linux. Efter et stykke tids googlen fant jeg
>en erstatning for conio.h i curses.h Og det virker da ogsaa fint. Men
>jeg mangler nu ogsaa en erstatnint for getch() fra dos.h Google viste
>mig da ogsaa frem til nogne erstatninger. Men jeg kan knagme ikke faa
>dem til at virke. Saa er der nogen her der kender en erstatning for
>getch() til linux?

getch() findes i curses.h

man getch

Bent Wagner

kosta (19-06-2002)
Kommentar
Fra : kosta


Dato : 19-06-02 00:19

Heine Laursen wrote:
> Hejsa NG.
>
> For ca. et halvt aar siden, programmerede jeg lidt i c, siden har jeg
> ikke programmering. Men nu har jeg saa faaet den ide at jeg vil porte
> disse smaa programmer til linux. Efter et stykke tids googlen fant jeg
> en erstatning for conio.h i curses.h Og det virker da ogsaa fint. Men
> jeg mangler nu ogsaa en erstatnint for getch() fra dos.h Google viste
> mig da ogsaa frem til nogne erstatninger. Men jeg kan knagme ikke faa
> dem til at virke. Saa er der nogen her der kender en erstatning for
> getch() til linux?
>
>

Jeg er ikke helt sikker men jeg tror at getchar() er en erstatining for
getch(). Men jeg er ikke helt sikker.
   Jeg prøvede at skifte getch() ud med getchar(), og derefter at oversætte
det med "gcc test.c". Programmet blev oversat uden problemer og den
kørte vidst også fint nok.


mvh
Konstantin Barkaia


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste