✍️ برای ثبت رویدادهای پشت سر هم، معمولاً نمیخواهیم یادداشت قبلی پاک شود. حالت a نوشتن تازه را به انتهای فایل میفرستد. این حالت خودش نویسه پایان خط اضافه نمیکند؛ اگر هر رویداد باید یک خط باشد، اضافه کردن \n هم مسئولیت کد ماست. در این تمرین دقیقاً یک پایان خط پس از متن تازه مینویسیم.
مثلاً متن اولیه «شروع» بههمراه پایان خط است و رویداد تازه «پایان» است؛ نتیجه دو خط میشود. اگر متن اولیه پایان خط نداشته باشد، طبق قرارداد همین تمرین متن تازه بلافاصله پس از آن میآید. قرار نیست یک جداکننده پنهان اختراع کنیم. متن رویداد خودش پایان خط ندارد، ولی میتواند خالی باشد.
کد اولیه فایل نمونه را درست میسازد، اما برای مرحله بعد حالت اشتباهی انتخاب کرده و متن قدیمی را از بین میبرد. آن را اصلاح کن و نتیجه را از فایل بخوان. خطای رایج دیگر، برگرداندن فقط تعداد نویسههای نوشتهشده است؛ write یک عدد برمیگرداند، ولی خروجی مورد انتظار ما متن کامل فایل است. تمام این کارها باید داخل همان پوشه موقت انجام شود تا آزمون بعدی به این اجرا وابسته نباشد.
در این تمرین پایان خطهای احتمالی ورودی فقط LF یعنی \n، مثل مثالها، هستند؛ ورودی با \r یا \r\n داده نمیشود.
فعالیت شما
تابع append_line(initial,line) دو رشته میگیرد؛ line پایان خط داخلی ندارد. فایل موقت را با initial بساز، با حالت a متن line+'\n' را دقیقاً به انتها اضافه کن و متن کامل خواندهشده را بده. جداکننده دیگری اضافه نکن؛ append_line('الف\n','ب')='الف\nب\n'. initial یا line خالی هم معتبرند. در این تمرین پایان خطهای احتمالی ورودی فقط LF یعنی \n، مثل مثالها، هستند؛ ورودی با \r یا \r\n داده نمیشود.