C: Text an der gleichen stelle austauschen. Wie?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • C: Text an der gleichen stelle austauschen. Wie?

    Hab jetzt folgendes geschrieben:

    Quellcode

    1. void welcome()
    2. {
    3. printf("\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    4. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    5. "\t\t++++++++++++++++\033[31m ZinsDia\033[0m ++++++++++++++++\n"
    6. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    7. "\t\t+++++++++++++++++++++++++++++++++++++++++\n");
    8. sleep(1);
    9. printf("\t\t-----------------------------------------\n"
    10. "\t\t-----------------------------------------\n"
    11. "\t\t----------------\033[31m ZinsDia\033[0m ----------------\n"
    12. "\t\t-----------------------------------------\n"
    13. "\t\t-----------------------------------------\n");
    14. }
    15. main ()
    16. {
    17. welcome();
    18. return 0;
    19. }
    Alles anzeigen


    1. printf() soll nach „sleep(1)“ duch 2. printf() ersetzt werden nur wie? ?(

    Hinweis: printf("\033[2J"); hab ich schon probier nur wird es an einer stelle weiter unten eingesetzt
  • Ich denke mal ein Moderator sollte diesen Beitrag verschieben nach C/C++/D.

    So und nun zu deinem Problem. Mit dem "\033[2J" aus

    Quellcode

    1. printf("\033[2J")

    müsste ich mich auch erst wieder einarbeiten. Wird heute selten genutzt.

    Willst du den Text auf dem Bildschirm sehen? Und dann an der gleichen Position durch anderen Text nach der Verzögerung durch

    Quellcode

    1. sleep(1); // Achtung: sleep() kennen nicht alle C-Compiler

    ersetzen? Oder ist die Position des Textes dein Problem. Wenn letzteres zutrifft, sind da meist betriebssystemspezifische Lösungen am Start.

    Frage zu Betriebssystem und Compiler: du willst das unter DOS mit dem Borland Compiler umsetzen?


    Hier schon mal ein Teil:

    Quellcode

    1. int main () // heute ist da "int main ()" oder "int main( int argc, char *argv[])" als Standard angesagt
    2. {
    3. welcome();
    4. return 0; // kann hier auch bei int main weggelassen werden. Der Compiler sollte das ergänzen, wenn der aktuell ist und 0 als Rüchgabewert geplant ist..
    5. }


    MfG f.-th.
  • sleep(1)kennt er und das programm funktioniert ja auch soweit nur will ich nach dass nach einer Sekunden der text geändert wird. Nur funktioniert das nictht so wie ich mit das vogestellt habe. printf("\033[2J"); löscht zwar (mehr oder weniger) den Bildschirm nur sitzt der Cursor an einer anderen Stelle und der neue Text wird an der falschen Stelle eingesetzt. Das Ergebnis ist das der Text immer weiter nach unten wandert! Gibt es da eine andere methode :?:
  • Es gibt andere Methoden, deshalb meine Frage nach Betriebssystem und Compiler. Denn viele Methoden funktionieren nicht überall.

    Hier eine Lösung für den Digital Mars Compiler:

    Quellcode

    1. // 2011jun12
    2. // spezial source: Compiler -> Digital Mars
    3. #include<stdio.h>
    4. #include<disp.h> // gibt es nur bei Digtal Mars oder?
    5. void welcome()
    6. {
    7. disp_open();
    8. disp_printf("\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    9. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    10. "\t\t++++++++++++++++ ZinsDia ++++++++++++++++\n"
    11. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    12. "\t\t+++++++++++++++++++++++++++++++++++++++++\n");
    13. sleep(1);
    14. disp_move(0,0);
    15. disp_flush();
    16. disp_printf("\t\t-----------------------------------------\n"
    17. "\t\t-----------------------------------------\n"
    18. "\t\t------------------ZinsDia ---------------\n"
    19. "\t\t-----------------------------------------\n"
    20. "\t\t-----------------------------------------\n");
    21. disp_close();
    22. sleep(1);
    23. }
    24. int main ()
    25. {
    26. welcome();
    27. return 0;
    28. }
    Alles anzeigen


    MfG bcc-fan
  • Hab z.Z. keine Unix/Linux deshalb nur grobe Hinweise:

    Quellcode

    1. void welcome()
    2. {
    3. printf("\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    4. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    5. "\t\t++++++++++++++++ ZinsDia +++++++++++++++++\n"
    6. "\t\t+++++++++++++++++++++++++++++++++++++++++\n"
    7. "\t\t+++++++++++++++++++++++++++++++++++++++++\n");
    8. sleep(1);
    9. system( Bildschirmlöschen); // Was bei UNIX für Bildschirmlöschen hin kommt muss du selbst suchen
    10. // ist nicht gerade eine elegante Lösung - eventuell fehlte der dazugehörige Header.
    11. printf("\t\t-----------------------------------------\n"
    12. "\t\t-----------------------------------------\n"
    13. "\t\t---------------- ZinsDia ---------------\n"
    14. "\t\t-----------------------------------------\n"
    15. "\t\t-----------------------------------------\n");
    16. }
    17. int main ()
    18. {
    19. welcome();
    20. return 0;
    21. }
    Alles anzeigen

    Eine weitere Möglichkeit sollte mit ncurses existieren:
    Beispielllink:
    ibiblio.org/pub/Linux/docs/HOW…SES-Programming-HOWTO.pdf
    es gibt noch andere.

    MfG bcc-fan