PDA

View Full Version : حذف داده ها از فایل



مهدی رحیم زاده
جمعه 28 اردیبهشت 1386, 10:08 صبح
سلام دوستای عزیزم
من یه تابع نوشتم که بتونم یک رکورد رو از یک فایل پاک کنم اما نمیتونم ...
من تو این تابع اول همه رکورد ها رو بجز اون رکورد مورد نظر توی یک فایل دیگه ذخیره می کنم و بعد اونا رو از فایل دوم تو فایل اول بازیابی می کنم اما موقع باز کردن فایل اول همه اطلاعات اون از بین میره ...
من باید چکار کنم ....
تو رو خدا زود جواب بیدن که خیلی لازمش دارم ...
اینم تابع :

saeid5977
جمعه 04 خرداد 1386, 19:43 عصر
سلام
خط 62 برنامه به جای Student_info_1.dat نوشتی Student_info.dat .

در ضمن بهتره از این راه استفاده نکنی. تو struct یه فیلد اضافه کن که نشون دهنده رکوردهای حذف شده باشه.
موفق باشی!

alimooghashang
سه شنبه 02 بهمن 1386, 12:38 عصر
اقا سلام
خوب میشه این کاری رو که گفتین را بگین که چطوریه
یعنی یه مثلا بزنین
لطفا

این که توی رکورد یه فیلد اضافی بگیریم یعنی چطور؟

emad_67
سه شنبه 02 بهمن 1386, 13:20 عصر
اقا سلام
خوب میشه این کاری رو که گفتین را بگین که چطوریه
یعنی یه مثلا بزنین
لطفا

این که توی رکورد یه فیلد اضافی بگیریم یعنی چطور؟بهتر بود یه تاپیک جدید ایجاد می کردی
دستوری برای حذف رکورد از فایل نداریم (یا اینکه من نمیدونم) برای حذف یک رکورد بهترین راه اینه که اون رکوردی رو که می خوای پاک کنی ابتدا از فایل بخونیش و بعد به اون یه لیبل 0 یا هر چیز دیگه ای نشون دهنده فایل حذف شده هست رو بدی. یعنی مثلا اگه یه struct داری در اون می تونی یه مقدار boolean قرار بدی که 0 نشون دهنده رکورد حذف شده باشه و 1 هم حذف نشده. در واقع همون طور که گفتم موقع حذف باید اون رکورد رو از فایل بخونی و بعد از اینکه مقدار اون متغیر رو 0 کردی مجددا اون رکورد رو در همون بایت از فایل write کنی.

alimooghashang
سه شنبه 02 بهمن 1386, 13:32 عصر
افا ممنون از جوابتون

ولی یه سوال

فرض کنین من این اطلاعات را به صورت زیر تو فایل ذخیره کردم



2948 ali 200 2338
2312 ahmad 200 509
3498 reza 8847 27995
298873 mohammad 38847 9938


حالا میخوام رکورد سوم(رضا) را حذف کنم؟؟

این کار رو چطور میتونم انجام بدم
همین :تشویق::خجالت:

emad_67
سه شنبه 02 بهمن 1386, 13:46 عصر
افا ممنون از جوابتون

ولی یه سوال

فرض کنین من این اطلاعات را به صورت زیر تو فایل ذخیره کردم



2948 ali 200 2338
2312 ahmad 200 509
3498 reza 8847 27995
298873 mohammad 38847 9938


حالا میخوام رکورد سوم(رضا) را حذف کنم؟؟

این کار رو چطور میتونم انجام بدم
همین :تشویق::خجالت:

این فایلی که تو منظورته فایل متنی هست. برای حذف یه رشته از این فایل ها فکر میکنم باید به جای اون کاراکتر ها یه space اضافه کنی که در این صورت جای خالیش باقی میمونه یا اینکه کاراکتر ها رو از خط بعد بخونی و در جایی که میخوای پاک کنی بنویسی. اما بهتره برای اینک ار یه struct تعریف کنی و بعد از اینکه داده ها رو در struct گذاشتی اونو در فایل ذخیره کنی. اینجوری خیلی بهتره

alimooghashang
سه شنبه 02 بهمن 1386, 14:13 عصر
این فایلی که تو منظورته فایل متنی هست. برای حذف یه رشته از این فایل ها فکر میکنم باید به جای اون کاراکتر ها یه space اضافه کنی که در این صورت جای خالیش باقی میمونه یا اینکه کاراکتر ها رو از خط بعد بخونی و در جایی که میخوای پاک کنی بنویسی. اما بهتره برای اینک ار یه struct تعریف کنی و بعد از اینکه داده ها رو در struct گذاشتی اونو در فایل ذخیره کنی. اینجوری خیلی بهتره

اقا ممنون
فکر کنم فهمیدم چی کار کنم
فقط یه سوال
میخوام بدونم که فرمانهای نوشتن تو فایل را چطور میتونم استفاده کنم؟
اگر فایل باینری باشه چطور توش بنویسم؟
و اینکه چطوری پوینتر را توی فایل حرکت بدم؟
تابع هاش چیه
با تشکر

emad_67
سه شنبه 02 بهمن 1386, 14:33 عصر
میخوام بدونم که فرمانهای نوشتن تو فایل را چطور میتونم استفاده کنم؟اگه منظورت فایل متنی هست که کد هایی که در همین تاپیک هست رو ببین. اگر ذخیره متغیری از کلاس یا struct هست که بگو تا توضیح بدم.

اگر فایل باینری باشه چطور توش بنویسم؟نحوه نوشتن فرقی نمیکنه.

و اینکه چطوری پوینتر را توی فایل حرکت بدم؟برای تنظیم اشاره گر فایل در جریان خروجی( یعنی برای ذخیره بر روی فایل ) از دستور seekp(n) استفاده کن. به جای n هم عددی رو که میخوای اشاره گر بر روی اون قرار بگیره بده. برای تنظیم اشاره گر در جریان ورودی یعنی برای خوندن از فایل از seekg(n) استفاده کن. این دو تا که گفتم تابع هایی از کلاس fstream هستند.

qanewaisi
شنبه 12 دی 1388, 21:20 عصر
سلام
می تونید با از help خود برنامه c استفاده کنید.