1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> დინამიკები 1: მოდით ახლა დაფიქსირება რომ გასულ პროგრამა. 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 ამისათვის, მოდით აიფოუნ in, რომ პირველი ხაზი კოდი, სადაც ჩვენ განაცხადა s 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 s bracket 16, მაგალითად, close bracket. 9 00:00:19,380 --> 00:00:23,690 >> სხვა სიტყვებით რომ ვთქვათ, მოდით აცხადებენ s არ აღარ იქნება მისამართი ხასიათი, 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 terminator. 13 00:00:31,570 --> 00:00:35,870 მოდით გაგრძელება შენახვა, კომპილაციის, და გაუშვით ეს პროგრამა. 14 00:00:35,870 --> 00:00:40,770 რათა scanf2 dot slash scanf2. 15 00:00:40,770 --> 00:00:45,100 მოდით ახლა აკრიფოთ სიმებიანი მოსწონს hello, და ჩვენ მადლობა გადაუხადა hello. 16 00:00:45,100 --> 00:00:46,440 >> ახლა, იქ მაინც პრობლემა. 17 00:00:46,440 --> 00:00:50,140 მე მხოლოდ აკრეფილი hello, რომელიც მხოლოდ ხუთი გმირები, პლუს 1 null 18 00:00:50,140 --> 00:00:50,445 terminator. 19 00:00:50,445 --> 00:00:53,610 იგი ტოვებს us მხოლოდ საჭიროება ექვსი bytes. 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 და ყოველ წერტილს, თუ ჩვენ გვესმის, რომ ჩვენ მეხსიერება ღალატობს, ჩვენ უნდა at 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