Ein seltsames Prozentzeichen in der printf-Ausgabe im Terminal mit C erhalten

Lesezeit: 2 Minuten

Benutzeravatar von rounak
Rounak

ich habe das printf Aussage am Ende meines Programms:

printf("%d", total_candies);

total_candies ist ein intund obwohl ich erwarte, dass alles korrekt funktioniert, erhalte ich zusammen mit der tatsächlichen Zahl am Ende ein seltsames Prozentzeichen.
Geben Sie hier die Bildbeschreibung ein

Kann mir jemand sagen warum das passiert?

  • Ist das vielleicht Ihr Konsolen-Prompt? Versuchen Sie, Ihrer Ausgabe einen Zeilenumbruch hinzuzufügen: printf("%d\n", total_candies);

    – r3mainer

    1. Dezember 2014 um 22:31 Uhr

  • Bitte aktualisieren Sie Ihre Frage, um ein vollständiges Programm anzuzeigen, das das Problem aufweist. Woher wissen Sie, dass das seltsame Prozentzeichen von dieser bestimmten Anweisung gedruckt wird? Könnte es Ihr Shell-Prompt sein?

    – Keith Thompson

    1. Dezember 2014 um 22:32 Uhr

  • Ich denke, einige zsh-Konfigurationen zeigen die Ausgabe auf diese Weise standardmäßig ohne abschließenden Zeilenumbruch an. Schnelltest: Verhält sich “echo -n hi” genauso?

    – Kobbeln

    1. Dezember 2014 um 22:34 Uhr


  • Dieses Zeichen ist Teil Ihrer zsh-Eingabeaufforderung.

    – Iharob Al Asimi

    1. Dezember 2014 um 22:35 Uhr

  • @iharob: Nein, zsh druckt dieses Reverse-Video % Zeichen, wenn die Ausgabe eines Programms nicht mit einem Zeilenumbruch endet.

    – Keith Thompson

    1. Dezember 2014 um 22:37 Uhr

Kevins Benutzeravatar
Kevin

Wenn die Ausgabe (nicht null) eines Programms keinen abschließenden Zeilenumbruch enthält, fügt zsh diese Farbe invertiert hinzu % um dies anzuzeigen und zur nächsten Zeile zu wechseln, bevor die Eingabeaufforderung gedruckt wird; Es ist im Allgemeinen bequemer als das Verhalten von Bash, die Eingabeaufforderung einfach dort zu starten, wo die Ausgabe endete.

  • Danke, ich wusste nichts über dieses Verhalten von zsh. Jetzt, wo ich darüber nachdenke, ist es in der Tat nützlicher als das Verhalten von bash.

    – Rundak

    2. Dezember 2014 um 7:08 Uhr

  • Dasselbe Verhalten bei golang fmt.Prinf(“%d”, a) festgestellt, diese Lösung ist auch dort anwendbar

    – Dulara Malindu

    23. Oktober 2021 um 7:20 Uhr

Im zsh

PROMPT_SP

Versuchen Sie, eine Teillinie beizubehalten (dh eine Zeile, die nicht mit einem Zeilenumbruch endet) das würde ansonsten von der Eingabeaufforderung aufgrund der verdeckt werden PROMPT_CR Möglichkeit. Dies funktioniert durch die Ausgabe einiger Cursorsteuerzeichen, einschließlich einer Reihe von Leerzeichen, die das Terminal zur nächsten Zeile umbrechen lassen sollten, wenn eine Teilzeile vorhanden ist (beachten Sie, dass dies nur erfolgreich ist, wenn Ihr Terminal über automatische Ränder verfügt, was typisch ist). .

Wenn eine Teillinie beibehalten wird, sehen Sie standardmäßig eine inverse+bold character at the end of the partial line: a ‘%’ Für ein normal user oder ein ‘#’ for Wurzel. If set, the shell parameter PROMPT_EOL_MARK` kann verwendet werden, um anzupassen, wie das Ende von Teilzeilen angezeigt wird.

1416290cookie-checkEin seltsames Prozentzeichen in der printf-Ausgabe im Terminal mit C erhalten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy