Ignorovanie textu z vystupu

Programovacie jazyky, rady, poradňa...
LukasqoO
King
King
Príspevky: 1647
Registrovaný: 08 okt 2011, 19:54

Ignorovanie textu z vystupu

Príspevok od používateľa LukasqoO »

Ahojte. Neviete ako by sa dal ignorovat nejaky text z vystupu programu? Pustam tento "program" v linuxe a prikaz system("cls") vypise sh: cls: command not found. V C iba zacinam. Dakujem.

Kód: Vybrať všetko

#include <stdio.h>
#define clear_w system("cls")             /*clear - win*/
#define clear_l write(1,"\E[H\E[2J",7); /*clear - linux*/
int main()
{                        
    int a,b;
    printf("Zadaj cislo pre a:\n ");
    scanf("%d",&a);
    clear_l;
    clear_w;
    printf("Zadaj cislo pre b:\n");
    scanf("%d",&b);
    clear_l;
    clear_w;
    printf("Zadal si cisla: a=%d ; b=%d\n",a,b);
    if (a < b)
        printf("a je mensie ako b");
    if (a > b)
        printf("a je vacsie ako b");
    if (a == b)
        printf("a aj b su rovnake");
    return(0);
}
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Ignorovanie textu z vystupu

Príspevok od používateľa harrison314 »

pridaj #include<stdlib.h>
a nepouzivaj naraz clear_w a clear_l , nato je definovane makro __unix alebo __linux__

Kód: Vybrať všetko

#include <stdio.h>
#include<stdlib.h>
#define clear_w system("cls")             /*clear - win*/
#define clear_l write(1,"\E[H\E[2J",7); /*clear - linux*/
int main()
{                        
    int a,b;
    printf("Zadaj cislo pre a:\n ");
    scanf("%d",&a);
    clear_l;
    clear_w;
    printf("Zadaj cislo pre b:\n");
    scanf("%d",&b);
#ifdef __UNIX
    clear_l;
#else
    clear_w;
#endif
    printf("Zadal si cisla: a=%d ; b=%d\n",a,b);
    if (a < b)
        printf("a je mensie ako b");
    if (a > b)
        printf("a je vacsie ako b");
    if (a == b)
        printf("a aj b su rovnake");
    return(0);
}
nemusi to byt uplne spravne, pisem to spameti
LukasqoO
King
King
Príspevky: 1647
Registrovaný: 08 okt 2011, 19:54

Re: Ignorovanie textu z vystupu

Príspevok od používateľa LukasqoO »

Podobne som to mal predtym:

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#define clear_w system("cls") /*clear - win*/
#define clear_l write(1,"\E[H\E[2J",7); /*clear - linuxe*/
int main()
{
    #ifdef __WINDOWS__
        clear_w;
#else
        clear_l;
#endif
    int a,b;
    printf("Zadaj cislo pre a:\n ");
    scanf("%d",&a);
    clear_l;
    clear_w;
    printf("Zadaj cislo pre b:\n");
    scanf("%d",&b);
    clear_l;
    clear_w;
    printf("Zadal si cisla: a=%d ; b=%d\n",a,b);
    if (a < b)
        printf("a je mensie ako b");
    if (a > b)
        printf("a je vacsie ako b");
    if (a == b)
        printf("a aj b su rovnake");
    return(0);
}
Ale bezvysledne :( Stale to vypisuje to iste...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Ignorovanie textu z vystupu

Príspevok od používateľa harrison314 »

Lebo spustas windows prikazy pod linuxom, kde mas podmieneny preklad?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Ignorovanie textu z vystupu

Príspevok od používateľa BX »

Kód: Vybrať všetko

#define clear_l write(1,"\E[H\E[2J",7); /*clear - linux*/
Toto čo je za odpornosť? Veď predsa system("clear");
Plus podmienený preklad a nemáš problém.
LukasqoO
King
King
Príspevky: 1647
Registrovaný: 08 okt 2011, 19:54

Re: Ignorovanie textu z vystupu

Príspevok od používateľa LukasqoO »

BX: http://stackoverflow.com/questions/2286 ... ux-using-c
Ako som pisal v C iba zacinam, tak mi to prosim vysvetlite. Nemusis hned na mna zautocit, ze co je to za odpornost.
//Alebo viete co, nereagujte na tuto temu a mozte lock. Dakujem pekne. O taketo rady nemam zaujem, co si niekto musi nieco dokazovat. A tebe harrison dakujem.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Ignorovanie textu z vystupu

Príspevok od používateľa BX »

A čo si chcel, aby sme ti poradili presmerovanie chybového výstupu? Dobre, tak si do windows verzie príkazu hoď zaň toto:

Kód: Vybrať všetko

2>/dev/null
a tým ten výstup odignoruješ.

A máš odpoveď akú si chcel. A môžeš ignorovať aj to, že to, čo si napísal bola totálna sprostosť a nikdy NIKDY sa to takto nerobí. V Cčku začínaš, takže kľudne môžeš ignorovať rady skúsenejších a ísť si freestyle vlastný spôsob života. A ešte byť aj odporný. Toto je tá cesta, len tak ďalej.
LukasqoO
King
King
Príspevky: 1647
Registrovaný: 08 okt 2011, 19:54

Re: Ignorovanie textu z vystupu

Príspevok od používateľa LukasqoO »

Ja som ti sem dal ten link, v ktorom pisali, ze je to tak lepsie. Nie aby si mi poradil a napisal dovod preco tak a nie onak, ale zdrbes ma za to, ze som tam pouzil nieco co je tebe proti srsti. :smt017
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Ignorovanie textu z vystupu

Príspevok od používateľa BX »

Prišiel si sem po radu, ako odignorovať chybový výstup terminálu. Nerob to, v tomto prípade určite nie. Odpoveď je podmienený preklad, ako písal harisson.
Ja som už len poukázal na to, že svojmu kódu nerozumieš a to je veľmi veľmi zle. Vo windows používaš system a v linuxe nie, prečo? Vieš čo robí funkcia system? Nie? Mal by si. Skús si to naštudovať a trochu sa aj pozrieť na to, čo je to ten výstup, ktorý chceš odignorovať. On tam nie je len tak pre nič za nič. Potom si budeš vedieť aj sám odpovedať.

A btw.
On linux it's possible to clear the console. The finest way is to write the following escape sequence to stdout:
write(1,"\E[H\E[2J",7);
which is what /usr/bin/clear does, without the overhead of creating another process.
No toto je hrozná výhra. V tomto prípade je to jednoduchšie jednoznačne to lepšie. V reálnych aplikáciách len ťažko nájdeš pre čistenie terminálu využitie a keď už, tak vytvorenie nového procesu ti pravdepodobne vadiť nebude. Najhoršie čo môžeš robiť, je už v začiatkoch do programov trepať takéto veci, ktoré nie že ty nechápeš, ale nepochopí to ani prípadný programátor, ktorý bude kód pozerať po tebe - niekedy v budúcnosti, ak si na takéto veci navykneš (áno, zachránil by to komentár, ale tam by potom chcelo aj vysvetliť dôvod, prečo som použil toto a nie hento jednoduché)
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Ignorovanie textu z vystupu

Príspevok od používateľa harrison314 »

LukasqoO napísal:Ja som ti sem dal ten link, v ktorom pisali, ze je to tak lepsie. Nie aby si mi poradil a napisal dovod preco tak a nie onak, ale zdrbes ma za to, ze som tam pouzil nieco co je tebe proti srsti. :smt017
To neni nikomu proti srsti, to je prosto zle. Namiesto toho aby si chybe ( cls neni na linuexe ) predchadzal, ty sa snazis zahodot jej hlasku.

Porozmyslaj o tom.
LukasqoO
King
King
Príspevky: 1647
Registrovaný: 08 okt 2011, 19:54

Re: Ignorovanie textu z vystupu

Príspevok od používateľa LukasqoO »

Už druhý deň sa si s tým lámem hlavu a bezvysledne.

//možno som na to prišiel, ozvem sa neskôr.
Napísať odpoveď