Millä C:n funktiolla voi tyhjentää konsoliin tulostetun tekstin?
Haluaisin myös tietää, miten konsolin tekstin ja taustan värit voi vaihtaa.
Termiksen tyhjentämiseen ei käsittääkseni oo olemassa yhtä kaikkialla luotettavasti toimivaa tapaa (monesti on ehotettu tuhannen tyhjän rivin tulostusta, mitä ei voi kovin eleganttina pitää), joten kysynkin miksi se pitäisi tyhjentää? Itse en keksi mitään järkevää syytä, ellei kyseessä ole joku peli tms., joka olisi parempi tehdä jollain curses -kirjastolla tms.
Värin vaihtokin taitaa olla vähän hankalaa luotettavasti, kun Windowsin terminaali ei tue ANSI-koodeja.
Windowsissa onnistuu WinAPI:lla.
https://www.ohjelmointiputka.net/keskustelu/7681-delphi-console-kysymyksiä
Tuolla on kirjoittamani esimerkki delphille mutta idea varmasti selväksi siitäkin. Kysy jos on jotain epäselvää.
Mitä turhia, helpommalla pääsee kun käyttää valmiita kirjastoja esim. PDcurses(win), Ncurses(linux) tai conio.h(borland) Putkaassa on opas Ncursessista joka toimii myös PDcursessissa.
Niinpä, ainakin ruuduntyhjennys onnistuu useimmilla kääntäjillä seuraavasti (eikä pelkällä Borlandilla):
#include <stdio.h> /* Sisällytetään standardi syöttö- ja tulostus kirjasto */ #include <conio.h> /* Sisällytetään clrscr()-funktion käyttöön tämä kirjasto */ int main(void) /* Pääohjelma */ { int i = 500; /* Ruudun täyttöä varten tulostetaan i merkkiä */ while(i > 0) /* Ruudun täyttö luuppi */ printf("x"); clrscr(); /* Tämä funktio siis todellakin tyhjentää ruudun */ return 0; /* Poistutaan pääohjelmasta */ }
dungeon86 kirjoitti:
Niinpä, ainakin ruuduntyhjennys onnistuu useimmilla kääntäjillä seuraavasti (eikä pelkällä Borlandilla):
#include <stdio.h> /* Sisällytetään standardi syöttö- ja tulostus kirjasto */ #include <conio.h> /* Sisällytetään clrscr()-funktion käyttöön tämä kirjasto */ int main(void) /* Pääohjelma */ { int i = 500; /* Ruudun täyttöä varten tulostetaan i merkkiä */ while(i > 0) /* Ruudun täyttö luuppi */ printf("x"); clrscr(); /* Tämä funktio siis todellakin tyhjentää ruudun */ return 0; /* Poistutaan pääohjelmasta */ }
Ööh, miten tämä toimii muilla kuin borlandilla, jos muilla ei ole conio.h-tiedostoa?
Linkku kirjoitti:
Ööh, miten tämä toimii muilla kuin borlandilla, jos muilla ei ole conio.h-tiedostoa?
on conio.h muillakin, mutta borlandin conio.h sisältää jotain extroja, kuten gotoxy():n ja luultavasti myös tun clrscr():n
Mulla on Dev-C++ ja siinä on conio.h jossa on myös gotoxy() ja clrscr().
Komodo kirjoitti:
Linkku kirjoitti:
Ööh, miten tämä toimii muilla kuin borlandilla, jos muilla ei ole conio.h-tiedostoa?
on conio.h muillakin, mutta borlandin conio.h sisältää jotain extroja, kuten gotoxy():n ja luultavasti myös tun clrscr():n
Mutta sitä ei löydy Linuxista.
Blaze: Olen tekemässä tekstipohjaista roolipeliä. Tavallisimpien funktioiden lisäksi tarvitsen tuon konsolin tyhjennyksen, ja ehkä värien vaihdon.
Juice: Niin mullakin.
dungeon86: Kiitos hyvästä funktiosta. Mutta se tiedosto on ainakin Dev-C++ssa conio.c ja whilestäsi puuttuu aaltosulut ja i:n pienennys :P
ville-v kirjoitti:
Mutta se tiedosto on ainakin Dev-C++ssa conio.c
Oikeaoppisesti ohjelmaan pitää sisällyttää conio.h ja linkittää conio.o tai vastaava. conio.c kyllä sisältää ne funktiot, mutta on aivan turhaa kääntää se aina uudestaan.
ville-v kirjoitti:
whilestäsi puuttuu aaltosulut ja i:n pienennys :P
"kieliopillisesti" tuo while on muuten ihan oikein, jos en väärin muista.
Huono mutta helppo tapa:
system("CLS");
Komodo kirjoitti:
"kieliopillisesti" tuo while on muuten ihan oikein, jos en väärin muista.
Niin onkin, mutta se vain pukkaa tota äksää ruudulle, kunnes sen sulkee.
Meitsi kirjoitti:
Huono mutta helppo tapa:
system("CLS");
tota ei saa tehdä ikinä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.