PDA

View Full Version : اشکال برنامه در درست نخواندن فایل با حجم بیشتر



ali zi zeperto
سه شنبه 14 مهر 1388, 18:36 عصر
سلام.اول که عنوان تاپیک رو اینطوری زدم چون بعدا باز هم سوال دارم و بهتره همه رو همینجا بپرسم.

من کد زیر رو برای خواندن فایل استفاده می کنم که برای فایلهای کوچیک جواب میده اما حجم فایل اگر مثلا ۳ مگابایت بشه جواب درست نمیده.چرا؟

// reading a complete binary file
#include <iostream.h>
#include <fstream.h>

ifstream::pos_type size;
char * memblock;

int main () {
ifstream file("/home/ali-zi-zeperto/Desktop/1.cpp", ios::in|ios::binary|ios::ate);
if (file.is_open()){
size = file.tellg();
memblock = new char[size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();

cout << "the complete file content is in memory"<<endl;
cout<<memblock;
delete[] memblock;
}
else cout << "Unable to open file";
return 0;
}

mortezamsp
چهارشنبه 15 مهر 1388, 12:07 عصر
آخه اونقدر فضا در اختيار نيست تا تو كل فايل رو ببري تو آرايه.
بجاي اينكه يكدفعه اين كار رو بكني فايل رو چند قسمت كن ، هر بار يه قسمت رو بريز تو آرايه.

ali zi zeperto
چهارشنبه 15 مهر 1388, 12:50 عصر
آخه اونقدر فضا در اختيار نيست تا تو كل فايل رو ببري تو آرايه.
بجاي اينكه يكدفعه اين كار رو بكني فايل رو چند قسمت كن ، هر بار يه قسمت رو بريز تو آرايه.
این جمله ؛آخه اونقدر فضا در اختیار نیست؛ رو درست متوجه نشدم.چرا نیست؟ اگر منظور طول آرایه است که به اندازه طول فایل بهش اختصاص داده شده.اگر هم مقدار رم سیستمم باشه که بازم بیشتر از اینها جا داره.
اینکه فایل رو چند قسمت کنم البته یکی از راههاست که میشه انجام داد اما من می خوام بدونم که جرا خطا می گیره؟ ایراد کار از کجاست؟

tdkhakpur
چهارشنبه 15 مهر 1388, 13:01 عصر
تعریق را از نوع دور در نظر بگیر شاید حل شد.


char * memblock;
//بصورت
char far * memblock;

mortezamsp
پنج شنبه 16 مهر 1388, 20:29 عصر
فکر میکنم! که حافظه ای که به برنامه اختصاص داده میود آنقدر زیاد نباشد.

البته من راه آقای tdkhakpoor را هنوز آزمایش نکردم.ایشان خیلی بهتر میدانند.

alamate_aoal
جمعه 17 مهر 1388, 00:08 صبح
تعریق را از نوع دور در نظر بگیر شاید حل شد.


char * memblock;
//بصورت
char far * memblock;

با استفاده از far در ویندوز راه به جایی نمیبرید .
در ضمن کلمه کلیدی far به گمانم دیگه منسوخ شده باشه

موفق باشید

DLL_DLL
جمعه 17 مهر 1388, 01:54 صبح
چرا نمی رسن ؟ معادلش هست LPSTR