Wie kann ich eine Variable verwenden, um die maximale Anzahl an Zeichen anzugeben, die scanf()
einlesen soll?
Wenn Sie zum Beispiel printf()
verwenden, können Sie das * wie folgt verwenden
Dies wird nur 5 Zeichen drucken, wie kann ich scanf
nur in MAXVAL lesen? MAXVAL muss als Längenangabe verwendet werden. Ich kann nicht einfach
Im Moment kann ich nur daran denken, mit scanf
in ein großes Array zu lesen und dann ssprintf
zu verwenden, um die Zeichenfolge in meiner begrenzten Zeichenfolge zu speichern. Die Verwendung eines Längenbezeichners wäre jedoch viel einfacher.
Sie können nicht. Sie müssen etwas anderes als scanf()
verwenden. Eine gute und beliebte Wahl ist fgets()
, obwohl die Semantik etwas anders ist: fgets()
liest eine Eingabezeile, während scanf()
mit %s
whitespace-getrennte Zeichenfolgen liest.
Um fgets()
zu verwenden, möchten Sie etwas wie:
Wenn Sie aus irgendeinem Grund scanf()
wirklich verwenden möchten, werfen Sie einen Blick auf diese Frage: Wie verhindert man, dass scanf einen Pufferüberlauf in C verursacht?
Kernighan und Pike empfehlen die Verwendung von snprintf (), um die Formatzeichenfolge zu erstellen. Ich entwickelte diese Idee zu einer Methode, die Strings sicher liest:
%Vor%