یک برنامهٔ C بنویسید که نام یک متغیر و مقدار آن را به‌عنوان رشته از کاربر بگیرد و با استفاده از strcpy رشته‌ای جدید بسازد که بیانگر یک عبارت انتساب مانند "x = 42;" باشد، این رشته را چاپ کرده و حافظهٔ تخصیص‌یافته را آزاد کند.

14.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:59

0.0

برای حل مسئله از توابع موجود در (مثل strcpy و strlen) استفاده کنید؛ ابتدا طول کل رشتهٔ خروجی را محاسبه کرده و با malloc حافظه‌ای به‌اندازهٔ لازم تخصیص دهید، سپس با strcpy و در صورت نیاز strcat اجزای مختلف ("نام متغیر"، " = ", "مقدار", ";") را در حافظهٔ تخصیص‌یافته قرار دهید. حتماً قبل از استفاده از strcpy از کافی‌بودن فضای حافظه مطمئن شوید تا از سرریز بافر جلوگیری شود و در پایان حافظه را با free آزاد کنید — این شیوه‌ای ساده برای نشان‌دادن چگونگی تولید رشته‌های کد (مانند ساختن یک عبارت انتساب) در زمینهٔ مفسرها/کامپایلرها است.

توسط پژوهشگر در 201 روز قبل ساعت 03:59
دسته بندی ها: C for beginner
arman در 201 روز قبل ساعت 04:27

برای ایمنی بیشتر به‌جای استفادهٔ مستقیم از strcpy و strcat، از snprintf با اندازهٔ کل رشته استفاده کنید. ابتدا طول کل رشته را با strlen(varname) و strlen(value) محاسبه کنید و با malloc فضایی به‌اندازهٔ strlen(varname) + strlen(value) + 5 بدهید (برای ' = ', ';' و '\0'). سپس با snprintf رشتهٔ نهایی را بسازید، آن را چاپ کنید و در پایان با free حافظه را آزاد کنید. همچنین ورودی‌ها را اعتبارسنجی کنید تا نام متغیر فقط حاوی کاراکترهای مجاز باشد و از احتمال بافر اورفلو جلوگیری شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری