View Full Version : مبتدی: مشکل با ایجاد فایل
vasilopita
سه شنبه 09 فروردین 1390, 00:51 صبح
سلام سال نو تون مبارک. ایشاالله به پای هم پیر بشین. بگذریم .. :لبخند:
من جدیدا با فایل ها مشکل دارم. قبلا مثلا وقتی می نوشتم:
ifstream in("test.dat")
تو محل پروژه همچین فایلی رو ایجاد می کرد ولی حالا اصلا چیزی نمی سازه . لطفا راهنمایی کنید
ممنون
tdkhakpur
سه شنبه 09 فروردین 1390, 09:49 صبح
ifstream in("test.dat", ios_base::in | ios_base::out | ios_base::trunc);
آخر کار وقتی دیگه با فایل کاری ندارید close کنید
vasilopita
سه شنبه 09 فروردین 1390, 23:53 عصر
کاربر دائمی جان ممنون از جوابت ولی کلا فایل نمی سازه چه کلوز کنم چه نکنم. قبلا این مشکل رو نداشتم و راحت فایل ایجاد میشد . ولی الان اصلا ایجاد نمی شه. نه او محل پروژه هستش نه وقی با یه ایف تستش می کنم ترو برمی گردونه. help me please :افسرده:
NIMA_1981
چهارشنبه 10 فروردین 1390, 00:56 صبح
سورس برنامه رو اینجا قرار بده با یک خط که نمیشه !!!!!!!!!!!
vasilopita
چهارشنبه 10 فروردین 1390, 12:17 عصر
سورس برنامه رو اینجا قرار بده با یک خط که نمیشه !!!!!!!!!!!
#include<fstream>
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
char menu();
void get_info();
void dec_or_inc();
void find_max();
struct customer
{
bool state;
char name[21];
int balance;
int account;
int kind;
}cust1,cust;
void main()
{
char chr;
while(1)
{
chr=menu();
switch(chr)
{
case'1': get_info(); break;
case'2': dec_or_inc(); break;
case '6':exit(0); break;
}
}
}
char menu()
{
char c;
cout<<"1: Enter Data\n2: Transaction\n3: Maximum Balance\n4: Close customer account\n5: Report The file\n6: Exit\n\a";
cin>>c;
return c;
}
void get_info()
{
fstream io("customer.dat");
cin.get();
cout<<"Please Enter The Below Information\n\a";
cout<<"Customer Name:\n";
cin.getline(cust1.name,20);
//if(!cust1.name[0])
//break;
cout<<"Account Number:\n";
cin>>cust1.account;
cout<<"Customer Balance:\n";
cin>>cust1.balance;
cout<<"Account Type:\n";
cin>>cust1.kind;
cust1.state=1;
io.seekp(sizeof(struct customer)*cust1.account,ios::beg);
io.write((char *)&cust1,sizeof(struct customer));
io.close();
}
void dec_or_inc()
{
fstream io("customer.dat");
char chr;
int acc;
int amount;
cout<<"Enter The Amount\n";
cin>>amount;
cout<<"To Decrise Please push 'D' and for incrise please push 'I'\n";
cin>>chr;
cout<<"Please Enter The Account Number\n";
cin>>acc;
io.seekg(sizeof(struct customer)*acc,ios::beg);
io.read((char *)& cust1,sizeof(struct customer));
if(cust1.state)
{
cout<<"Account Name: "<<cust1.name<<"\n";
cout<<"Account Balance: "<<cust1.balance<<"\n";
cout<<"kind:"<<cust1.kind<<"\n";
switch(chr)
{
case ('d'):
if(amount>cust1.balance)
cout<<"Balance is less,can Not Change\n\a";
else
{
cust1.balance-=amount;
cout<<"The Operation Complete,Your Balnce Now is: "<<cust1.balance<<"\n";
}
break;
case('i'):
cust1.balance+=amount;
cout<<"The Operation Complete,Your Balnce Now is: "<<cust1.balance<<"\n";
break;
default:
cout<<"The Entered Character Is NOT True\n\a";
break;
}
io.seekp(sizeof(struct customer)*acc,ios::beg);
io.write((char *)&cust1,sizeof(struct customer));
}
else
cout<<"The Account Number is invalid\n\a";
}
البته این کد در محیط ویژوال نوشته شده. در کل مشکل من اینه که قبلا توی پوشه ی پروژه فایل رو می ساخت ولی الان نه.
vasilopita
پنج شنبه 11 فروردین 1390, 21:48 عصر
ifstream in("test.dat", ios_base::in | ios_base::out | ios_base::trunc);
آخر کار وقتی دیگه با فایل کاری ندارید close کنید
دستت درد نکنه درست شد. ولی می خوام بدونم چرا قبلا که فقط می نوشتم ifstream in("test.dat")
جواب می داد ولی حالا نه ؟ بعد اینکه چرا نوشتید ios_base چرا ننوشتید ios ؟ ممنون
tdkhakpur
جمعه 12 فروردین 1390, 00:10 صبح
جواب می داد ولی حالا نه ؟
به احتمال زیاد مسیر فعال جاری میتونه باشه.
بعد اینکه چرا نوشتید ios_base چرا ننوشتید ios ؟
فرقی نداره هر دو یه یک نقطه اشاره دارند.
vasilopita
چهارشنبه 17 فروردین 1390, 16:33 عصر
آقا تو رو خدا کمک کنید. قبلا آدرس نمی دادم می ساخت ، حالا آدرس هم که می دم فایل رو نمی سازه. یه سری فایل رو تو محلی که گفتم ساخت بعد فایل رو دیلت کردم و حالا دیگه اصلا نمی سازتش.
الان اینجوریم :افسرده: تو رو خدا نزارید کارم به :گریه: بکشه.
پ.ن: آقا حل شد فهمیدم مشکل چیه همون چیزی که گفته بودید. بجای ios::trunc من ios::binary می نوشتم:اشتباه:. حالا لطف کنید بگید چرا نمی شه از binary استفاده کرد؟ مرسی
وضعیت فعلی::لبخندساده:
tdkhakpur
پنج شنبه 18 فروردین 1390, 12:53 عصر
فهمیدم مشکل چیه همون چیزی که گفته بودید. بجای ios::trunc من ios::binary می نوشتم:اشتباه:. حالا لطف کنید بگید چرا نمی شه از binary استفاده کرد؟
هر کدوم از گزینه ها معنی خاصی به کار فایل میدن - دادن باینری به ابن معنی نیست که فایل ساخته و یا داده ای بهش اضافه بشه.
trunc باعث ایجاد و جایگذاری داده داخل فایل میشه به همین دلیل بنا به کای که میخواهید انجام بدبد باید این گزبنه ها or بشن
vasilopita
پنج شنبه 18 فروردین 1390, 16:45 عصر
دوست عزیز دیگه بخدا روم نیست پست جدید بزارم ولی چه کنم.... :خجالت:
کلا انگار با مجرای ورودی مشکل دارم. یعنی اگه بنوسیم : ofstream out("test_out.dat"); هیچ مشکلی وجود نداره ولی اگه بنویسم: ifstream in("test_in.dat"); مشکل داره و فایل ایجاد نمیشه و وقتی با if(!in) تستش می کنم ترو برمی گردونه. لطفا راهنمایی کنید:بوس:
vasilopita
جمعه 19 فروردین 1390, 15:48 عصر
آقا تو رو خدا کمک کنید....
ژوپیتر
جمعه 19 فروردین 1390, 16:21 عصر
دلیل اینکه همیشه TRUE دریافت میکنید اینه که اون تابع متغییر شما رو در حافظه ساخته و به اون یک Handle اختصاص داده که نباید هم FALSE از آب در بیاد تا شما بتونید از زیر توابع او متغییر استفاده کنید، تشخیص اینکه آیا فایل مورد نظر شما باز شده یا نه به صورت زیر است:
ifstream file ("example.bin", 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"; delete[] memblock; } else cout << "Unable to open file";
vasilopita
چهارشنبه 24 فروردین 1390, 15:17 عصر
دلیل اینکه همیشه TRUE دریافت میکنید اینه که اون تابع متغییر شما رو در حافظه ساخته و به اون یک Handle اختصاص داده که نباید هم FALSE از آب در بیاد تا شما بتونید از زیر توابع او متغییر استفاده کنید، تشخیص اینکه آیا فایل مورد نظر شما باز شده یا نه به صورت زیر است:
دوست عزیز تابع is_open هم فالس بر می گردونه دیگه نمی دونم چیکار کنم
tdkhakpur
پنج شنبه 25 فروردین 1390, 12:27 عصر
دو مورد ofstream و ifstream هر کدوم کار خاص دارن به حرف اول هرکدوم دقت کنید i به معنی in یا همان ورودی هست و o به معنی out یعنی خروجی در کل ifstream برای این هست که فایل رو برای ورودی و تغییر در محتوا باز کنید اما ofstream برای باز کردن فایل همراه با ایجاد هست .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.