>> 1 SPEAKER: בואו עכשיו לתקן שהתכנית האחרונה.
והפעם, בואו במפורש להקצות כמה זיכרון שבי
הקלט של המשתמש יישמר.
לשם כך, בואו לחדד על זה קודם שורת קוד שבו אנו הכריזו ים
בעבר להיות כוכב char.
הפעם, בואו מחדש להכריז שלו כדלקמן -
של char סוגר 16, למשל, קרוב סוגר.
>> במילים אחרות, בואו נכריז ים לאף עוד כתובת של אופי,
אלא מערך של 16 תווים.
בדרך זו, המשתמשים יכולים להקליד עד 15 תווים ועדיין להשאיר מקום
שליחות קטלנית null.
בואו להמשיך לחסוך, לקמפל, והפעל תכנית זו.
הפוך scanf2 לוכסן נקודת scanf2.
בואו עכשיו נקליד מחרוזת כמו שלום, ואנחנו הודיתי לשלום.
>> עכשיו, יש עוד בעיה.
הקלדתי רק בשלום, שהוא רק חמישה תווים, בתוספת 1 לnull
שליחות קטלנית.
זה משאיר אותנו עם רק צורך בשישה בתים.
>> אך למרבה הצער, אנחנו רק הוקצה 16 בסך הכל.
כך שאם המשתמש ממש סוגים ב16 דמויות, או 17, או כמה מאה
תווים, אנחנו עדיין לא הולכים יש מספיק מקום בזיכרון עבור
הקלט של המשתמש.
ואכן, זה מה שעושה מקבל קלט משתמש, כך
קשה באופן כללי.
ואכן, זו הסיבה שאנחנו יישמנו פונקצית מחרוזת הגט בראשון
מקום בספריית CS50 -
כדי להבין איך לטפל באותם מצבים שבם המשתמש מקליד
יותר תווים ממה שאנחנו בתחילה צפוי.
>> למען האמת, ללא לחלוטין שכתוב בתכנית זו,
אין פתרון נקי.
במקום זאת, מה שהיינו צריך לעשות זה לקבל דמות מהמשתמש אחד בכל
זמן, שוב ושוב.
ובכל נקודה, אם אנחנו מבינים שאנחנו מתוך זיכרון, היינו צריך ב
הנקודה שתחזור ובלהקצות מחדש איזה זיכרון יותר, העתק את המשתמש של
קלט קודם מהנתח הראשון שלנו מזיכרון לחדש,
נתח גדול יותר של זיכרון.
ואז לחזור על תהליך זה שוב ו שוב עד שהמשתמש נעשה מתן
קלט שלו או שלה.