khafan_bat
دوشنبه 17 آبان 1389, 00:45 صبح
با سلام و خسته نباشید
من هنوز درک نکردم این قضیه رو !! نحوه ی دقیق نوشتن و خواندن تو فایل ! خسته شدم
1 ) چه فایل رو در حالت باینری باز کنیم و چه در حالت متنی وقتی کاراکتر به کاراکتر در فایل می نویسیم بنابراین بایت به بایت در فایل نوشته ( یا خوانده ) می شود . پس بین دو حالت تفاوتی وجود نخواهد داشت . من تست کردم ( پس باینری باز کردن و کاراکتر به کاراکتر نوشتن بی معنی است )
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
char ch;
system("cls");
// ------------------------------------------------
ofstream out("test.txt",ios::binary);
if(!out) {
cout << "Cannot open file.";
exit(0);
}
cout << "Enter charachters ($ and Enter to end:)\n";
do {
cin.get(ch);
out.put(ch);
} while(ch!='$');
out.close();
// ------------------------------------------------
ifstream in("test.txt");
cout << "\nOutput from file :\n";
in.get(ch);
while(!in.eof())
{
cout<<ch;
in.get(ch);
}
in.close();
// ------------------------------------------------
getch();
return 0;
}
2 ) وقتی رشته رشته در فایل می نویسیم ( یا میخوانیم ) حداکثر طول خواندن ما معلوم است ( طول متغیر استرینگ ) و همچنین با جدا کردن رشته ها با استفاده از space کار راحت تر نیز خواهد شد . اما من در تحلیل کد زیر مانده ام . چون از یک رشته عدد از فایل خوانده میشود اما در یک متغیر صحیح ذخیره میشود . . !! آیا این وسط تبدیلی صورت می گیرد ؟ ( در حالت های مد باینری و متنی تشریح تحلیل شود !! )
include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
char name[21];
int number;
float ave;
system("cls");
// -------------------------------------------------------
ofstream Fout("list.txt",ios::binary);
if(!Fout) {
cout << "Cannot open file.";
exit(0);
}
cout << "Enter student name , number and average(Ctr+z to end:)\n";
while( cin >> name >> number >> ave )
{
Fout << name << ' ' << number << ' ' << ave << ' ' ;
}
Fout.close();
// -------------------------------------------------------
cout<<endl<<endl<<endl;
cout << name <<" "<< number <<" "<< ave << endl;
system("cls");
// -------------------------------------------------------
ifstream Fin("list.txt");
if(!Fin) {
cout <<"Cannot open file. ";
getch();
exit(0);
}
while(Fin >> name >> number >> ave)
{
cout << name <<" "<< number <<" "<< ave << endl;
}
Fin.close();
cout << name <<" "<< number <<" "<< ave << endl;
getch();
return 0;
}
3 ) خواندن ( یا نوشتن ) در فایل توسط رکورد به چه صورت است ؟ ( فکر کنم سوالات قبلی پاسخ داده شوند این مسئله نیز حل شود )
با تشکر از تمامی اساتید
من هنوز درک نکردم این قضیه رو !! نحوه ی دقیق نوشتن و خواندن تو فایل ! خسته شدم
1 ) چه فایل رو در حالت باینری باز کنیم و چه در حالت متنی وقتی کاراکتر به کاراکتر در فایل می نویسیم بنابراین بایت به بایت در فایل نوشته ( یا خوانده ) می شود . پس بین دو حالت تفاوتی وجود نخواهد داشت . من تست کردم ( پس باینری باز کردن و کاراکتر به کاراکتر نوشتن بی معنی است )
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
char ch;
system("cls");
// ------------------------------------------------
ofstream out("test.txt",ios::binary);
if(!out) {
cout << "Cannot open file.";
exit(0);
}
cout << "Enter charachters ($ and Enter to end:)\n";
do {
cin.get(ch);
out.put(ch);
} while(ch!='$');
out.close();
// ------------------------------------------------
ifstream in("test.txt");
cout << "\nOutput from file :\n";
in.get(ch);
while(!in.eof())
{
cout<<ch;
in.get(ch);
}
in.close();
// ------------------------------------------------
getch();
return 0;
}
2 ) وقتی رشته رشته در فایل می نویسیم ( یا میخوانیم ) حداکثر طول خواندن ما معلوم است ( طول متغیر استرینگ ) و همچنین با جدا کردن رشته ها با استفاده از space کار راحت تر نیز خواهد شد . اما من در تحلیل کد زیر مانده ام . چون از یک رشته عدد از فایل خوانده میشود اما در یک متغیر صحیح ذخیره میشود . . !! آیا این وسط تبدیلی صورت می گیرد ؟ ( در حالت های مد باینری و متنی تشریح تحلیل شود !! )
include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
char name[21];
int number;
float ave;
system("cls");
// -------------------------------------------------------
ofstream Fout("list.txt",ios::binary);
if(!Fout) {
cout << "Cannot open file.";
exit(0);
}
cout << "Enter student name , number and average(Ctr+z to end:)\n";
while( cin >> name >> number >> ave )
{
Fout << name << ' ' << number << ' ' << ave << ' ' ;
}
Fout.close();
// -------------------------------------------------------
cout<<endl<<endl<<endl;
cout << name <<" "<< number <<" "<< ave << endl;
system("cls");
// -------------------------------------------------------
ifstream Fin("list.txt");
if(!Fin) {
cout <<"Cannot open file. ";
getch();
exit(0);
}
while(Fin >> name >> number >> ave)
{
cout << name <<" "<< number <<" "<< ave << endl;
}
Fin.close();
cout << name <<" "<< number <<" "<< ave << endl;
getch();
return 0;
}
3 ) خواندن ( یا نوشتن ) در فایل توسط رکورد به چه صورت است ؟ ( فکر کنم سوالات قبلی پاسخ داده شوند این مسئله نیز حل شود )
با تشکر از تمامی اساتید