View Full Version : سوال: فایل های باینری و تصادفی
programmer.z
سه شنبه 28 تیر 1390, 22:06 عصر
سلام
می خواستم یه کم توضیح از فایل های باینری و تصادفی و اینکه چه طور استفاده می شوند برام بدید. و اینکه دستور های read و write چه مقدار هایی رو دریافت می کنند؟ چه طوری استفاده می شوند؟ چه طوری یک ساختمان رو به فایل ارسال می کنند.
بعد اینکه مثلا در یک فایل باینری 10 تا رکورد داریم مثلا می خواهیم در بین این رکورد ها مثلا خط پنجم یک داده اضافه کنیم و تعداد رکورد ها 11 تا بشه. آیا این کار امکان داره یا اینکه روی رکورد پنجم می نویسه و اطالاعات اون رکورد پاک میشه؟
tdkhakpur
چهارشنبه 29 تیر 1390, 00:25 صبح
می خواستم یه کم توضیح از فایل های باینری و تصادفی و اینکه چه طور استفاده می شوند برام بدید.
فایل باینری فایلی هست که داده ها رو بصورت از 0 تا 255 یعنی کدهای 0 تا 255 میبیند و همه ارقام یا کاراکترها اوج مثبت دارن و منفی نمیشن.
و اینکه دستور های read و write چه مقدار هایی رو دریافت می کنند؟ چه طوری استفاده می شوند؟
این دو دستور برا خواندن و نوشتن از موقعیت کنونی که اشاره گر فایل قرار دارد به کار برده میشه که ورودیشان هندل فایل و آدرس ساختار و طول ساختار یا داده است که میخواهید داخل فایل قرار بدید یا بخوانید .
هندل فایل میتونه برای شبکه و یا بصورت تک کاربره باز شده باشه که نمونه زیر یک مثال برای شبکه lan هست
short int handle;
handle = sopen( filename , O_BINARY | O_RDWR, SH_DENYNO, S_IREAD|S_IWRITE ) ;
اگر عدد مخالف -1 باشه عدد حاصل هندل فایل هست که در نهایت بعد از استفاده باید توسط close بسته بشود
چه طوری یک ساختمان رو به فایل ارسال می کنند.
بصورت زیر
strcut myst{
char name[10];
char fam[10];
}MySt;
write( handle, MySt, sizeof(MySt));
بعد اینکه مثلا در یک فایل باینری 10 تا رکورد داریم مثلا می خواهیم در بین این رکورد ها مثلا خط پنجم یک داده اضافه کنیم و تعداد رکورد ها 11 تا بشه. آیا این کار امکان داره یا اینکه روی رکورد پنجم می نویسه و اطالاعات اون رکورد پاک میشه؟
برای اینکه به نقطعه ای پرش کنید از lseek استفاده کنید اما در مورد موارد دیگه باید تحلیل درست داشته باشید و داشتن خط یا اضافه شدن داده ها فایل به ساختار بانکی که طراحی میکنید بستگی داره نه به ابزار کار
لینک irdataBase زیربنای بانکهای اطلاعاتی (http://barnamenevis.org/showthread.php?240356-irdataBase-زیربنای-بانکهای-اطلاعاتی) نمونه ای از این نوع بانکهاست.
programmer.z
پنج شنبه 30 تیر 1390, 12:03 عصر
منظورتون از اینکه ارقام و کاراکتر ها اوج مثبت دارن چیه؟
من از دستورات open استفاده می کنم که هدر فایلش fstream.f است و در این دستور تا آنجایی که من می دانم هندل فایل ندارد. و البته اگر دستور sopen رو هم برام توضیح بدید خیلی ممنون می شوم.
بعد اینکه دستورات read و write رو من خونده بودم که دو تا آرگومان دارند!
tdkhakpur
جمعه 31 تیر 1390, 00:37 صبح
منظورتون از اینکه ارقام و کاراکتر ها اوج مثبت دارن چیه؟
منظور اینه که کاراکترها از 0 تا 255 هستند نه 0 تا 127 و -1 تا -127
من از دستورات open استفاده می کنم که هدر فایلش fstream.f است و در این دستور تا آنجایی که من می دانم هندل فایل ندارد. و البته اگر دستور sopen رو هم برام توضیح بدید خیلی ممنون می شوم.
بعد اینکه دستورات read و write رو من خونده بودم که دو تا آرگومان دارند!
اون متدهایی که داخل fstream قرار داده شده اند از توابع سطح پایینی مانند sopen استفاده میکنند و چون fsream کلاسی از ابزار کار با فایل هست و با تعریف متغییری از این کلاس باعث رزرو شدن حافظه میشه به همین دلیل برای اینکه کاربر راحت با فایل کنه هندل بصورت private در داخل کلاس قرار داده میشه تا در انتها بصورت دستی یا توسط مخرب از بین برود.
میتوانید نحوه استفاده و تفاوت های پارامتر ها رو از راهنما یاد بگیرید در ضمن کار با بانک داده ها به نوع ابزار ارتباطی ندارد باید اصول کار رو یاد بگیرید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.