1. leht 1-st

Info printimine konsooli ühele reale

Postitatud: 15.06.2009, 12:33
Postitas huu
Näiteks on mingis keeles for loop. Kuidas seda konsooli printida nii, et loop'i iga liige lihtsalt asendab eelmise prinditud liikme ja rida ei vahetata?

Peaks vist üsna lihtne teha olema, olen seda paljudes programmides näinud.
Näiteks protsentide lugemine nullist sajani.

Postitatud: 15.06.2009, 13:14
Postitas olavsu1
ehk vast nii et paned andmed minema puhvrisse ja andmete esitaja paned tsükliliselt neid andmeid sealt lugema kuni tingimuseni mis loendamise lõpetab.

mingi loenduri näide http://www.daniweb.com/forums/thread189556.html#

ehk saad kasulikke vihjeid.

edit: ma ei saa seda ise kah jooksma nii kuidas ettekujutus on :P

see on sama asi mis hakkab kaadreid lugema programmis mplayer.

käsk mplayer mms://tv.eenet.ee/kotkas

siis hakkavad terminalis numbrid jookma.

ilmselt tuleb programmi koodist vaadata kuidas loendurid tehtud on.

Postitatud: 15.06.2009, 19:19
Postitas DaStoned
Väga prosta lahendus: väljatrükkimisel kasuta reavahetuse '\n' asemel '\r' ja suru stdout puhvrist ekraanile. Kogu maagia. Eeldab "küpsetatud" terminalirezhiimi (st sisend-väljud töödeldakse reakaupa, mitte tähe kaupa) mis ka vaikimisi on.

Minimaalne näidisprogramm C-s, mis loeb 15-ni:

Kood: Vali kõik

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    int i;
    for (i = 0; i < 15; i++) {
        usleep(200000);
        printf("%02d\r", i);
        fflush(stdout);
    }
    printf("\n");
    return 0;
}

Postitatud: 15.06.2009, 21:02
Postitas olavsu1
tavalises konsoolis töötas, eclipse terminalis ei töötanud. pani iga tulemuse eraldi reale.

Postitatud: 15.06.2009, 21:09
Postitas huu
Tänud, DaStoned. Täpselt see, mida vaja.

Postitatud: 15.06.2009, 21:29
Postitas imapi
ja kui ei taha kompileerida ja möllata siis võib kirjutada ka bashi scripti, millesse ma hiljuti olen "armunud" :)

#!/bin/bash
for ((i=100;i<=115;i+=1)); do
echo -e -n "\r$i"
sleep 1
done

Postitatud: 15.06.2009, 21:37
Postitas huu
See bash script kirjutab iga arvu uuele reale ju.

Postitatud: 15.06.2009, 21:40
Postitas imapi
oehh sorry :) ... ma kiiruga kirjutasin lihtsalt näite kui lihtne on bashis üldse scriptida. Viimasel ajal palju oma elu lihtsamaks sellega teinud :)

...
muutsin ära, visuaalselt on ok aga kindlasti on paremaid lahendusi :)

Postitatud: 15.06.2009, 22:18
Postitas DaStoned
olavsu1 kirjutas:tavalises konsoolis töötas, eclipse terminalis ei töötanud. pani iga tulemuse eraldi reale.
Ilmselt siis eclipse terminal ei ühildu unixi terminaliga. Pole neil ka palju ühist, eclipse on multiplatvormne ja on eeskätt Java tegemiseks.

Postitatud: 15.06.2009, 23:19
Postitas Taux007
Äkki tahab keergi seletada lähemalt, mis see bashis scriptimine on?

Postitatud: 15.06.2009, 23:24
Postitas olavsu1
anjuta, mille eile avastasin, see paneb küll tulemuse ühele reale.

Postitatud: 16.06.2009, 10:13
Postitas imapi
Taux007 kirjutas:Äkki tahab keergi seletada lähemalt, mis see bashis scriptimine on?
Siin kenasti seletatud. http://en.wikipedia.org/wiki/Bourne_shell

Postitatud: 16.06.2009, 14:38
Postitas obundra