1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> 1 SPEAKER: בואו עכשיו לתקן שהתכנית האחרונה. 3 00:00:01,960 --> 00:00:04,920 והפעם, בואו במפורש להקצות כמה זיכרון שבי 4 00:00:04,920 --> 00:00:06,550 הקלט של המשתמש יישמר. 5 00:00:06,550 --> 00:00:09,600 לשם כך, בואו לחדד על זה קודם שורת קוד שבו אנו הכריזו ים 6 00:00:09,600 --> 00:00:11,590 בעבר להיות כוכב char. 7 00:00:11,590 --> 00:00:14,210 הפעם, בואו מחדש להכריז שלו כדלקמן - 8 00:00:14,210 --> 00:00:19,380 של char סוגר 16, למשל, קרוב סוגר. 9 00:00:19,380 --> 00:00:23,690 >> במילים אחרות, בואו נכריז ים לאף עוד כתובת של אופי, 10 00:00:23,690 --> 00:00:26,610 אלא מערך של 16 תווים. 11 00:00:26,610 --> 00:00:30,295 בדרך זו, המשתמשים יכולים להקליד עד 15 תווים ועדיין להשאיר מקום 12 00:00:30,295 --> 00:00:31,570 שליחות קטלנית null. 13 00:00:31,570 --> 00:00:35,870 בואו להמשיך לחסוך, לקמפל, והפעל תכנית זו. 14 00:00:35,870 --> 00:00:40,770 הפוך scanf2 לוכסן נקודת scanf2. 15 00:00:40,770 --> 00:00:45,100 בואו עכשיו נקליד מחרוזת כמו שלום, ואנחנו הודיתי לשלום. 16 00:00:45,100 --> 00:00:46,440 >> עכשיו, יש עוד בעיה. 17 00:00:46,440 --> 00:00:50,140 הקלדתי רק בשלום, שהוא רק חמישה תווים, בתוספת 1 לnull 18 00:00:50,140 --> 00:00:50,445 שליחות קטלנית. 19 00:00:50,445 --> 00:00:53,610 זה משאיר אותנו עם רק צורך בשישה בתים. 20 00:00:53,610 --> 00:00:56,740 >> אך למרבה הצער, אנחנו רק הוקצה 16 בסך הכל. 21 00:00:56,740 --> 00:01:01,305 כך שאם המשתמש ממש סוגים ב16 דמויות, או 17, או כמה מאה 22 00:01:01,305 --> 00:01:04,410 תווים, אנחנו עדיין לא הולכים יש מספיק מקום בזיכרון עבור 23 00:01:04,410 --> 00:01:05,400 הקלט של המשתמש. 24 00:01:05,400 --> 00:01:07,750 ואכן, זה מה שעושה מקבל קלט משתמש, כך 25 00:01:07,750 --> 00:01:08,940 קשה באופן כללי. 26 00:01:08,940 --> 00:01:12,270 ואכן, זו הסיבה שאנחנו יישמנו פונקצית מחרוזת הגט בראשון 27 00:01:12,270 --> 00:01:13,900 מקום בספריית CS50 - 28 00:01:13,900 --> 00:01:16,900 כדי להבין איך לטפל באותם מצבים שבם המשתמש מקליד 29 00:01:16,900 --> 00:01:19,710 יותר תווים ממה שאנחנו בתחילה צפוי. 30 00:01:19,710 --> 00:01:21,750 >> למען האמת, ללא לחלוטין שכתוב בתכנית זו, 31 00:01:21,750 --> 00:01:23,290 אין פתרון נקי. 32 00:01:23,290 --> 00:01:26,970 במקום זאת, מה שהיינו צריך לעשות זה לקבל דמות מהמשתמש אחד בכל 33 00:01:26,970 --> 00:01:28,860 זמן, שוב ושוב. 34 00:01:28,860 --> 00:01:32,510 ובכל נקודה, אם אנחנו מבינים שאנחנו מתוך זיכרון, היינו צריך ב 35 00:01:32,510 --> 00:01:36,450 הנקודה שתחזור ובלהקצות מחדש איזה זיכרון יותר, העתק את המשתמש של 36 00:01:36,450 --> 00:01:39,400 קלט קודם מהנתח הראשון שלנו מזיכרון לחדש, 37 00:01:39,400 --> 00:01:40,810 נתח גדול יותר של זיכרון. 38 00:01:40,810 --> 00:01:44,610 ואז לחזור על תהליך זה שוב ו שוב עד שהמשתמש נעשה מתן 39 00:01:44,610 --> 00:01:45,860 קלט שלו או שלה. 40 00:01:45,860 --> 00:01:48,246