Grundlagen der scanf () Funktion in C-Programmierung

Für die Eingabe von bestimmten Arten von Variablen, die in der Programmiersprache C, werden Sie feststellen, dass die scanf () Funktion kommt in handliches. Es ist nicht ein Allzweck-Eingabefunktion, und es hat einige Einschränkungen, aber es ist toll für den Test-Code oder Grabbing Werte.

In gewisser Weise könnte man, dass scanf argumentieren () ist die Eingangs Version der Funktion printf (). Zum Beispiel verwendet er die gleichen Konvertierungszeichen (die% Platzhalter-Dinge). Diesem Grund, scanf () ist ganz besonders darüber, wie Text eingegeben wird. Hier ist das Format:

# include int scanf (const char * restrict Format, ...) -

Scary, nicht wahr? ignorieren Sie es einfach für den Moment. Hier ist eine weniger erschreckend Version des Formats:

scanf ( "Platzhalter", Variable) -

In dieser Version, Platzhalter ist ein Umwandlungszeichen, und Variable eine Art von Variable ist, die die Umwandlung Charakter entspricht. Es sei denn, es ist ein String (char-Array) ist, wird die Variable durch das Präfix Operator.

Die scanf () Funktion ist in der Header-Datei stdio.h prototypisiert, so können Sie diese Datei enthalten müssen, wenn Sie die Funktion nutzen.

Hier sind einige scanf () Beispiele:

scanf ( "% d", Highscores) -

Die vorangehende Anweisung liest einen Integer-Wert in die Variable Highscore. Dies setzt voraus, dass Highscore ist eine int-Variable.

scanf ( "% f", Temperatur) -

Die vorstehenden scanf () Anweisung wartet auf eine Floating-Point-Wert eingegeben werden, die dann in der gespeichert wird Temperatur Variable.

scanf ( "% c", key) -

In der vorangehenden Zeile, scanf () nimmt das erste Zeicheneingabe und speichert sie in der Schlüssel Variable.

scanf ( "% s", Vorname) -

Die Platzhalter% s wird in Text zu lesen, aber nur, bis der erste Raumzeichen angetroffen wird. So ein Raum oder ein Register oder die Enter-Taste beendet die Zeichenfolge. (Das nervt.) Auch Vorname Array ist ein Zeichen, so dass es nicht braucht sich die Operator in der scanf () Funktion.

Wie eine Zeichenfolge zu lesen, mit scanf ()

Eine der häufigsten Arten, die scanf () Funktion zum Einsatz zu bringen ist in einem Textblock von der Standardeingabe zu lesen. Zu diesem Zweck gerecht zu werden, wird die% s-Umwandlungszeichen verwendet - wie in printf (), aber mit dem Eingang statt der Ausgabe.

SCANF () SWALLOWS A STRING

# include int main () {char Vorname [15] -printf ( "Geben Sie Ihren Vornamen:") -scanf ( "% s", Vorname) -printf ( ". Freut mich,% s n", Vorname -return) (0) -}

Übung 1: Geben Sie den Quellcode aus scanf () Schwalben einen String in ein neues Projekt, ex0712, in Code :: Blocks. Erstellen und ausführen.

Zeile 5 deklariert ein char-Array - eine String-Variable - benannt Vorname. Die Zahl in den Klammern gibt die Größe des Arrays, oder die Gesamtzahl der Zeichen, die dort gespeichert werden können. Das Array ist kein Wert zugewiesen, so dass es leer erstellt. Grundsätzlich setzt die Anweisung in Zeile 5 beiseite Speicher für bis zu 15 Zeichen.

Die scanf () Funktion in Zeile 8 liest einen String von der Standardeingabe und speichert sie in der Vorname Array. Die% s Umwandlungszeichen leitet scanf () für eine Zeichenfolge als Eingabe zu suchen, wie% s ein Platzhalter für Zeichenketten in printf ist () 's Ausgabe.

Übung 2: Ändern Sie den Quellcode aus scanf () Schwalben einen String, so dass eine zweite Zeichenfolge für die Person, die Nachnamen deklariert wird. Fordert den Benutzer für ihren Nachnamen als auch, und dann beide Namen angezeigt werden durch einen einzigen printf () Funktion.

  • Die Zahl in Klammern (siehe Zeile 5) gibt die Größe des char-Array, oder die Länge der Schnur plus eins.

  • Wenn Sie eine char-Array oder String-Variable erstellen, stellen Sie sicher, dass Sie es mit einer Größe groß genug ist, um den Text zu halten. Diese Größe sollte die maximale Anzahl der Zeichen plus eins.

  • Der Grund für die Erhöhung der char Array-Größe von einem ist, dass alle Strings in C mit einem bestimmten Abschlusszeichen beenden. Es ist der NULL-Zeichen, die als 0 geschrieben wird. Der Compiler fügt automatisch die 0 bis zum Ende der Zeichenfolge Werte, die Sie in Ihrem Quellcode zu erstellen, sowie Text durch verschiedene Texteingabefunktionen lesen.

    Sie müssen bedenken, Raum für das Zeichen hinzufügen, wenn Sie Speicher für String-Eingang beiseite stellen.

Wie zu lesen Werte mit scanf ()

Die scanf () Funktion kann mehr als Strings lesen. Es kann durch eine Umwandlungszeichen in jedem angegebenen Wert zu lesen.

SCANF () EATS eine ganze Zahl

# include int main () {int FAV-printf ( "Was ist Ihre Lieblingszahl:") -scanf ( "% d", FAV) -printf ( "!% d meine Lieblingszahl ist auch n", FAV) -return (0) -}

Im scanf () Frisst ein Integer, der scanf () Funktion liest in einem ganzzahligen Wert. Die% d Umwandlung Zeichen verwendet wird, so wie printf () - in der Tat, es in der Linie verwendet wird 9. Dieses Zeichen leitet scanf () für einen int-Wert für die Variable zu suchen fav.

Übung 3: Erstellen Sie ein Projekt, ex0714, den Quellcode unter Verwendung gezeigt in scanf () Frisst ein Integer. Erstellen und ausführen. Testen Sie das Programm durch verschiedene Integer-Werte, positive und negative eingeben.

Vielleicht fragen Sie sich über das Et-Zeichen () in der scanf () Funktion. Der Charakter ist ein C Operator - insbesondere die Speicheradresse Operator. Es ist eine der erweiterten Funktionen in C, die Zeiger in engem Zusammenhang steht. Ein kaufmännisches Und muss jede Variable in der scanf () Funktion angegebenen Präfix. Die Ausnahme ist ein Array, wie der Vorname char-Array in scanf () Frisst ein Integer.

Versuchen Sie, das Programm erneut ausgeführt wird, aber einen Dezimalwert angeben, wie 41,9 oder geben Sie Text statt einer Zahl.

Der Grund, warum Sie eine falsche Ausgabe zu sehen ist, dass scanf () ist sehr spezifisch. Es holt nur den Variablentyp durch die Umwandlung Zeichen angegeben. Wenn Sie also einen Gleitkommawert wollen, müssen Sie einen Schwimmer Variable angeben und die entsprechende Umwandlung Kenn% f, in diesem Fall verwendet werden.

Übung 4: Ändern Sie den Quellcode aus scanf () Isst einen Integer, so dass eine Fließkommazahl angefordert wird, Eingabe und angezeigt.

  • Sie brauchen nicht ein char-Array-Variable mit einem Et-Zeichen in den scanf () funktions- voran wenn scanf () unter Verwendung von in einem String zu lesen, nur die Zeichenfolge Variablennamen angeben.

  • Die scanf () Funktion stoppt die Texteingabe in der ersten Raumzeichen zu lesen, Leerzeichen, Tab oder Enter-Taste.

Menü