aleshi
سه شنبه 13 اردیبهشت 1390, 12:19 عصر
سلام
یه مشکل دارم که خیلی اذیتم میکنه اگه کسی کمک کنه ممنون میشم.
یه برنامه نوشتم که توش با فایلها کار میکنه.
برنامه که برای بار اول اجرا میشه، فایل رو باز میکنه و توش اطلاعاتی رو مینویسه و فایلو میبنده و اجرا تموم میشه.
برای بار دوم که اجرا میشه و برنامه فایلو برای نوشتن باز میکنه اطلاعات جدید رو روی اطلاعات قبلی مینویسه و داده های قبلی از بین میره.
الان مشکلم اینه که من وقتی برنامه رو برای بار دوم اجرامیکنم به اطلاعاتی که قبلا وارد کردن دسترسی ندارم در حالی که اون اطلاعات برام خیلی لازمند.
و دلیل این مشکل: وقتی فایل با out باز میشه، به صورت پیش فرض از trunc برای باز کردن استفاده میکنه و trunc هم موقع باز کردن فایل کل محتویات فایلو از بین میبره. به این خاطره که همه محتویات قبلی فایل از بین میره.
راه حلش:موقع باز کردن فایل با out از مقدار پیش فرض نباید استفاده کرد.
مشکل من:نمیتونم این مقدار پیش فرضو خنثی کنم که ازش استفاده نشه
نمونه ای از برنامه .
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream myfile;
myfile.open ("c://a.txt", ios::out);
myfile.seekp(1);
myfile << "Writing this to a file.\n";
myfile.close();
return 0;
}
که با seekp میشه از جایی که داده ها میخوان شروع به نوشته شدن کنن، استفاده میشه. اگه آرگومانهای seek زو تغییر بدیم بیشتر مشخص میشه که اشکالش کجاست. مثلا 56 بود بشه 23 اطلاعات قبلی از بین میرن و فقط داده هایی که بار دوم ذخیره شدند تو فایل هستند.
ممنون میشم اگه کسی کمکم کنه. کارم بخاطر این کلی لنگه.
اگه بشه یه مثال کوچولو هم بزنین که ین مشکلو حل کرده باشه.
یه مشکل دارم که خیلی اذیتم میکنه اگه کسی کمک کنه ممنون میشم.
یه برنامه نوشتم که توش با فایلها کار میکنه.
برنامه که برای بار اول اجرا میشه، فایل رو باز میکنه و توش اطلاعاتی رو مینویسه و فایلو میبنده و اجرا تموم میشه.
برای بار دوم که اجرا میشه و برنامه فایلو برای نوشتن باز میکنه اطلاعات جدید رو روی اطلاعات قبلی مینویسه و داده های قبلی از بین میره.
الان مشکلم اینه که من وقتی برنامه رو برای بار دوم اجرامیکنم به اطلاعاتی که قبلا وارد کردن دسترسی ندارم در حالی که اون اطلاعات برام خیلی لازمند.
و دلیل این مشکل: وقتی فایل با out باز میشه، به صورت پیش فرض از trunc برای باز کردن استفاده میکنه و trunc هم موقع باز کردن فایل کل محتویات فایلو از بین میبره. به این خاطره که همه محتویات قبلی فایل از بین میره.
راه حلش:موقع باز کردن فایل با out از مقدار پیش فرض نباید استفاده کرد.
مشکل من:نمیتونم این مقدار پیش فرضو خنثی کنم که ازش استفاده نشه
نمونه ای از برنامه .
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream myfile;
myfile.open ("c://a.txt", ios::out);
myfile.seekp(1);
myfile << "Writing this to a file.\n";
myfile.close();
return 0;
}
که با seekp میشه از جایی که داده ها میخوان شروع به نوشته شدن کنن، استفاده میشه. اگه آرگومانهای seek زو تغییر بدیم بیشتر مشخص میشه که اشکالش کجاست. مثلا 56 بود بشه 23 اطلاعات قبلی از بین میرن و فقط داده هایی که بار دوم ذخیره شدند تو فایل هستند.
ممنون میشم اگه کسی کمکم کنه. کارم بخاطر این کلی لنگه.
اگه بشه یه مثال کوچولو هم بزنین که ین مشکلو حل کرده باشه.