Das ist eine gute Frage. Und die Antwort
ist, dass es dort ist in der Tat ein Speicherproblem
Die Zeichenfolge gelesen wird und von der Adresse des str
bis zur Länge der tatsächlichen gelesenen Zeichenfolge Anforderungen gespeichert,
und überschreitet den Ort, den Sie zugeordnet für es.
Jetzt kann es nicht sofort abstürzen werden oder sogar überhaupt für
kurze Programme, aber es ist sehr wahrscheinlich, dass, wenn Sie
das Programm erweitern und andere Variablen definieren, erscheint an dieser Stelle
ihnen überrannt, die Schaffung seltsam Bugs aller Art, und es kann auch
schließlich auch abstürzen.
Kurz gesagt, ist dies ein echter Fehler, aber es ist nicht ungewöhnlich,
Speicher Fehler wie diese zu haben, die auf den ersten haben keinen Einfluss, aber
erstelle Bugs oder das Programm abstürzen später.
Undefiniertes Verhalten. Zu Ihrer Information: in Ihrer 'str' ist genug Platz für __9__ Zeichen. – tkausl
Mögliches Duplikat von [So lesen Sie die Zeichenfolge von der Tastatur mit C] (http://stackoverflow.com/questions/7709452/how-to-read-string-from-keyboard-using-c) –
scanf fuction kann eine beliebige Länge lesen von String, also hat Ihr Code ein undefiniertes Verhalten. – linvoker