>> HOPARLÖR 1: indi düzeltmek edək ki, ötən proqram.
Və bu zaman, ən aydın şəkildə ayrılması bildirin bir yaddaş olan
İstifadəçilərin giriş saxlanılır.
Bunu etmək üçün, ki ilk bilemek imkan biz s bəyan kodu xətt
Əvvəllər char ulduz olmaq.
Bu dəfə edək yenidən bəyan Bu aşağıdakı kimi -
char s bracket 16, məsələn, yaxın bracket.
>> Başqa sözlə, bu, heç bir ş.s bəyan edək uzun bir xarakter bir ünvan ola,
lakin 16 simvol olduqca bir sıra.
Bu yolla, istifadəçi üçün 15 yazın simvol və hələ də otağı tərk
bir null terminator.
Saxla nin davam edək, Kompilyasiya, və bu proqram Run.
Scanf2 dot çizgi scanf2 olun.
İndi salam kimi bir simli yazın edək, və biz salam üçün təşəkkür edirik.
>> İndi, bir problem hələ də var.
Mən yalnız olan, hello tipli null üçün beş simvol, plus 1
terminator.
Bu, yalnız bizə yaradır altı bytes üçün ehtiyac.
>> Amma təəssüf ki, biz yalnız cəmi 16 ayırıb.
Belə ki, əgər 16 istifadəçi həqiqətən növləri simvol və ya 17, ya bir neçə yüz
simvol, biz hələ fikrində deyilik üçün yaddaş kifayət qədər otaq var
İstifadəçilərin girdi.
Və əslində, bu, nə istifadəçi daxil əldə belə
ümumiyyətlə çətindir.
Biz həyata nə həqiqətən, bu ilk get string funksiyası
CS50 kitabxana yer -
o idarə etmək üçün necə anlamaq üçün hallar olduğu istifadəçi növləri
biz daha çox simvol əvvəlcə gözlənilən.
>> Açığı, tamamilə Bu proqram yeniden,
təmiz həll var.
Əksinə, biz nə olardı almaq bir user bir bir xarakter
vaxt, təkrar.
Və hər bir nöqtədə, biz istəyirik, həyata əgər yaddaş, biz olardı
ki point geri getmək və təkrar bölüşdürə bir daha yaddaş, istifadəçinin surəti
bizim ilk yığın əvvəlki input yeni daxil yaddaş,
yaddaş böyük yığın.
Və sonra yenidən bu prosesi təkrar və istifadəçi təmin edilir yenidən qədər
onun input.