drucken Ich habe einen Code, der beabsichtigt, einige Leerzeichen nach einer Zeichenfolge zu drucken (um zu löschen, was möglicherweise hier sein könnte, da ich den Cursor bewege).printf: kann nicht weniger als 1 Zeichen mit% * c
Also, ich etwas wie folgt verwendet:
int some_length = 0;
char some_string[]="hello world";
printf("%*c%s\n", some_length, ' ', some_string);
Was ich dachte, würde produzieren „Hallo Welt“, aber nein, es produziert „Hallo Welt“ (beachten Sie, dass in meinem realen Code sind die Räume gedruckt Nach der Zeichenfolge, da das Ziel ist zu löschen, nicht Einzug, ich mache das hier nur um Arbeitsprobe zu haben).
Also, ist dieses Verhalten beabsichtigt? Da some_length 0 ist, könnte man vernünftigerweise hoffen, nichts zu drucken, oder? Ist das ein undefiniertes Verhalten, oder könnte es ein aber in der Standardbibliothek sein (ich bezweifle es, aber ...)?
sein müssen, dass heißt, ich '% * s' funktionieren würde, wenn die Zeichenfolge übergeben glauben war nur "" "." – ShadowRanger
Detail: "Der * Modifikator ... spezifiziert eine variable minimale Breite" wenn im Spezifizierer kein '.'' steht. Ein' '*' 'nach dem '' .'' steuert die _Präzision/maximum_ – chux
In der Tat dachte nicht über das "Minimum" -Ding. Nicht wirklich an uns gewöhnt Auf diese Weise muss ich zugeben. Nun, ShadowRanger unten) ist wahr, es funktionierte mit "% * s", 0, "". Aber die Antwort von user2357112 ist genauer, also werde ich seine bestätigen. [redigieren Sie] die Erwiderung, die ich erwähnte, ist gelöscht worden, also nehme ich dieses stattdessen an ... – user3459474