View Full Version : طریقه ذخیره و فراخوانی فایل در ++C
creative
دوشنبه 12 شهریور 1386, 13:51 عصر
سلام.
من دارم یه برنامه دفترچه تلفن می نویسم.
این برنامه می تونه تعداد زیادی اسم رو بخونه و در یک آرایه ذخیره کنه. اما وقتی از برنامه خارج میشیم همه اسم ها پاک میشه. حالا من می خوام با یه روش ساده یه کاری کنم که بشه اسم ها رو در یک فایل ذخیره کرد و دوباره پس از اجرای مجدد برنامه فایل ذخیره شده را فراخوانی کرد.
در ضمن من این برنامه رو بدون استفاده از کلاس نوشتم. لطفا از روشی غیر از استفاده از کلاس ها منو راهنمایی کنید. ممنون ...
emad_67
دوشنبه 12 شهریور 1386, 17:01 عصر
ساده ترین روشی که میشه یه سری رشته رو تو فایل ذخیره کرد اینه که یه فایل txt باز کنی و رشته ها رو بریزی تو اون.برای مثال این رو ببین
#include<iostream.h>
#include<fstream.h>
void main()
{
ofstream out("phone.txt",ios::out);
char *s[4]={"c++","C#","visual","c"};
for(int i=0;i<4;i++)
out<<s[i]<<endl;
}
این برای ذخیره در فایل بود
برای خوندن فایل هم اینجوری باید بنویسی
#include<iostream.h>
#include<fstream.h>
void main()
{
ifstream in("phone.txt",ios::in);
char s[10];
for(int i=0;i<4;i++)
{
in>>s;
cout<<s<<endl;
}
}
الان من یه فایل txt به نام phone باز کردم و تو یه حلقه for رشته ها رو ریختم توی فایل و برای خوندن هم با همین عملگر << که برای cin هست میتونی از فایل بخونی
ولی همون طور که گفتم این روش برای دخیره رشته خوبه ولی برای دفترچه تلفن چون فقط با یه رشته سر و کار نداریم بهتره که یه struct تعریف کنی که مثلا شامل نام ،نام حانوادگی، شماره تلفن و ... باشه و بعد یه متغیر از اون struct تعریف کنی و اون متغیر رو تو فایل ذخیره کنی .از این مثالی هم که زدم اگه مشکلی بود بگو
SMRAH1
دوشنبه 12 شهریور 1386, 19:41 عصر
می تونی از fread , fwrite استفاده کنی مثلا اگر اطلاعات در 20 تا از آرایه ای از نوع ساختار (structure) با نام ST ذخیره شده کافیست بنویسی
برای نوشتن
fp = fopen("file.ext","w");
if(fp == NULL)
{
printf("\n Can not open file!!");
getch();
exit(0);
}
fwrite(ST,sizeof(struct StudentStruct),MAX_STUDENT,fp);
flcose(fp);
برای خواندن
fp = fopen("File.ext","r");
if(fp == NULL)
{
printf("\n Can not open file!!");
getch();
exit(0);
}
fread(ST,sizeof(struct StudentStruct),MAX_STUDENT,fp);
fclose(fp);
اگرهم چند تا آرایه است باید همه را ذخیره یا باز یابی کنی.در هر حال باید با همین fread , fwrite بازی کنی
موفق باشی
creative
دوشنبه 12 شهریور 1386, 21:00 عصر
خیلی ممنون از راهنمایی هاتون.
من از روش اول استفاده کردم.
چون چیز زیادی از Struct نمی دونم.
به هر حال باز هم ممنون.
SMRAH1
سه شنبه 13 شهریور 1386, 18:54 عصر
سلام
من برنامه ای رو که خواستید نوشتم البته با DJGPP کامپایل شده چون توی TC مشکل داشت.زبان هم سی است (نه سی ++)
ولی نمی دونم چرا اصرار دارید که برنامه باشه در حالی که این عملیات را خیلی راحت می توانید در Excel انجام دهید.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.