Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Screenclear bzw. Form Feed in C

  1. #1
    Registrierter Benutzer Avatar von roadracer
    Registriert seit
    16.02.2010
    Ort
    Wolfenbüttel
    Beiträge
    48

    Screenclear bzw. Form Feed in C

    Hallo,
    bitte verzeiht mir Anfängerfehler oder derartiges, ich bin Newbie und befasse mich seit einiger Zeit mit C. Also, ich bin auf der Suche nach einer plattformunabhängigen Lösung (Linux, Windows; beide GCC) um in einem C Programm (Text-basierend) den Bildschirm zu leeren (screenclear). Am besten natürlich aus den Stammheaders (oder wie heißt es? Headern?). Ich habe schon Tante Google gefragt und die Forumssuche benutzt. Dabei bin ich bereits auf folgende, aber unzureichende Lösungen gestoßen:
    1. Mit der Funktion scrclr() im Header conio.h. Problem: Gibt's nur für Windows (in VS, glaub' ich).
    2. Mit der Funktion system("clear") bzw. system("cls"). Da wird aber wohl das Programm (clear, cls) nicht richtig mit ein-kompiliert. Daher momentan nur Behelfslösung.
    3. Mit der Funktion printf("\f") (form feed). Hört sich eigentlich ja ganz gut an, aber irgendwie bekomme ich nur einen doppelten Zeilenumbruch:
    Code:
    nick@Morphy:~/Skripte> ./test
    
    nick@Morphy:~/Skripte>
    Was mach ich da falsch???

    Meiner Meinung ist Lösung 3 wohl das beste, da es all meinen Kriterien entspricht. Nur mach ich eben irgendwas falsch.

    VG

    roadracer

  2. #2
    Registrierter Benutzer Avatar von roadracer
    Registriert seit
    16.02.2010
    Ort
    Wolfenbüttel
    Beiträge
    48
    So,
    ich hab die Lösung gefunden. Man braucht nur die Befehle
    Code:
    printf ("\033[2J");
    printf ("\033[1;1H");
    auszuführen. Damit kann man sich auch eine klasse Funktion schreiben
    Code:
    int clear()
    {
    printf ("\033[2J");
    printf ("\033[1;1H");
    return 0;
    }
    Das hab' ich von http://snippets.dzone.com/posts/show/2734

    VG

  3. #3
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    05.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    wozu das return 0?
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  4. #4
    Registrierter Benutzer Avatar von roadracer
    Registriert seit
    16.02.2010
    Ort
    Wolfenbüttel
    Beiträge
    48
    Da muss ich ehrlich sagen, dass weiß ich selber nicht. Wie gesagt, ich bin Newbie in C und in Shell gibt's sowas halt nicht. Ich habe das Handbuch CProgrammierung von Wikibooks gelesen, und das return 0; übernommen. Als Anfänger gibt's wichtigere Sachen als return 0; zu verstehen. Ich hab auch schon mal etwas von einem Makro EXIT_SUCCES gehört, mich aber damit und mit Makros allgemein nicht weiter beschäftigt.
    Ich bitte also um Nachsichtigkeit für meine "Leichgläubigkeit"

    VG
    OpenSUSE 12.1 x86 KDE 4.7

    Alle Rechtschreibfehler unterliegen der GFDL und dürfen so oder in veränderter Form genutzt und weiter gegeben werden.

  5. #5
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    05.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Ein Rückgabewert ist i.d.R. zu etwas gut. Etwa um den Aufrufer mitzuteilen ob ein Fehler passiert ist oder bei einer mathematischen Funktion der errechnete Wert. In diesem Fall würde ich es einfach weg lassen:
    Code:
    void clear()
    {
        printf ("\033[2J");
        printf ("\033[1;1H");
    }
    Das return 0 in der main Funktion signalisiert ja auch dem Aufrufer des Programms, das alles ok lief. Die main Funktion ist eben mit einer Signatur, die ein int zurück gibt, definiert. Bei deinen eigenen Funktionen darfst du das machen wie du willst.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    8
    Das mit den Makros EXIT_SUCCESS, EXIT_FAILURE hat mit den Rückgabewerten auf verschiedenen Systemen zu tun.
    Du bindest einfach die stdlib.h ein und dann kannste auf die Werte zugreifen und solltest dich nicht mehr um die Systeminterne-Darstellung kümmern müssen.

    Code:
    #include <stdlib.h>

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •