>> Sprecher 1: Lassen Sie uns nun fix dass im letzten Programm.
Und dieses Mal wollen wir explizit zuordnen einige Speicher, in dem die
Eingabe des Benutzers gespeichert werden.
Um dies zu tun, wollen wir schärfen an diesem ersten Codezeile, wo wir erklärt s
zuvor auf ein char Stern.
Dieses Mal wollen wir wieder erklären es wie folgt -
char s Klammer 16, zum Beispiel, Klammer zu.
>> In anderen Worten, wir erklären s kein eine Adresse eines Zeichen länger sein,
sondern ein Array von 16 Zeichen.
Auf diese Weise können die Benutzer in bis zu 15 Charaktere und noch Raum für
ein Null-Terminator.
Lassen Sie uns gehen Sie zu Speichern, Kompilieren, und Ausführen dieses Programms.
Machen scanf2 dot Strich scanf2.
Lassen Sie uns nun eine Zeichenfolge wie hallo, und wir sind für die hallo dankte.
>> Nun, es gibt noch ein Problem.
Ich habe nur in hallo eingegeben haben, was nur fünf Zeichen, plus 1 für die Null
Terminator.
Es bleibt uns nur eine Notwendigkeit für sechs Bytes.
>> Aber leider nur wir zugeteilt insgesamt 16.
Also, wenn der Benutzer tatsächlich in 16 Arten Zeichen oder 17 oder mehrere hundert
Zeichen, wir sind immer noch nicht zu genug Platz im Speicher für die
Benutzereingabe.
Und in der Tat, das ist, was macht Benutzereingaben immer so
schwierig im Allgemeinen.
Und in der Tat, das ist, warum wir umgesetzt die get-String-Funktion in der ersten
Platz in der CS50-Bibliothek -
um herauszufinden, wie man diese umgehen Situationen, in denen der Benutzer in
mehr Zeichen, als wir zunächst erwartet.
>> Ehrlich gesagt, ohne sie komplett Umschreiben dieses Programm,
es gibt keine saubere Lösung.
Vielmehr, was wir tun müssen, ist erhalten eine Figur aus dem Benutzer eine an ein
Zeit, wieder und wieder.
Und an jedem Punkt, wenn wir erkennen, wir sind aus der Erinnerung, wir haben zu
Punkt zurück, dass in und umverteilen einige mehr Speicher, kopieren Sie die Benutzer-
vorherige Eingabe von unserem ersten Stück der Speicher in der neuen,
größeren Teil des Speichers.
Und dann wiederholen Sie diesen Prozess wieder und wieder, bis der Benutzer fertig ist die Bereitstellung
seine Eingabe.