PDA

View Full Version : جلوگیری از اضافه شدن رکورد اضافی



Asad.Safari
پنج شنبه 11 خرداد 1385, 13:32 عصر
با سلام

من وقتی تو یه فایل که بدین گونه باز شده :
fp=fopen("test.dat","wb


وقتی میخایم یه استراکچر رو توش ذخیره کنم
همیشه یه رکورد رو برنامه خودش اضافه میکنه
که مقدارش صفر است

چطور جلوی این کار رو بگیریم


با تشکر

Mahdi_Delphi
جمعه 12 خرداد 1385, 07:20 صبح
اون قسمت از کد برنامه ات که استراکچر رو اضافه میکنه بزار تا بشه نظر داد.

Asad.Safari
جمعه 12 خرداد 1385, 08:53 صبح
[code]

#define maxsize 10
int con=0; //This is our counter for last structure node number

struct student
{
char name[20];
int grade[5];
}std[maxsize];



void save()
{
FILE *fp;
int i;
fp=fopen("test.dat","wb");
for(i=0;i<con;i++)
{
fwrite(&std[i],sizeof(struct student),1,fp);
}
clrscr();
gotoxy(25,10);
printf("Saved Successfuly");
fclose(fp);
getch();


}


[code/]

Mahdi_Delphi
جمعه 12 خرداد 1385, 11:01 صبح
من که خطای خاصی نمیبینم.
ولی خیلی احتمالات میشه داد.
اگه کل برنامه رو بزاری بهتر میشه نظر داد.
البته اگه مایل بودی.

موفق باشید

Asad.Safari
جمعه 12 خرداد 1385, 13:10 عصر
فکر نکنم نیاز به کل برنامه باشه

چون که فقط تو این تابع و یه تابع دیگه با فایل کار میشه !

[code]

void load()
{
int i;
FILE *fp;
fp=fopen("test.dat","rb");
while(!feof(fp))
{


fread(&std[con],sizeof(struct student),1,fp);
con++;


}
gotoxy(30,26);
printf("Load Is Complete");
fclose(fp);
getch();
}
[/code[

Iran-PC
یک شنبه 14 خرداد 1385, 10:48 صبح
[code]

#define maxsize 10
int con=0; //This is our counter for last structure node number

struct student
{
char name[20];
int grade[5];
}std[maxsize];



void save()
{
FILE *fp;
int i;
fp=fopen("test.dat","wb");
for(i=0;i<con;i++)
{
fwrite(&std[i],sizeof(struct student),1,fp);
}
clrscr();
gotoxy(25,10);
printf("Saved Successfuly");
fclose(fp);
getch();


}


[code/]

سلام.
اول یک سوال.
این یک رکورد اضافی آخر فایله یا اولش.
بعدشم توی این کد شما con رو صفر کردید و دیگر مقدار ندادید و بعد در شرط حلقه ازش استفاده کردید. چرا؟

Mahdi_Delphi
یک شنبه 14 خرداد 1385, 19:23 عصر
فکر نکنم نیاز به کل برنامه باشه

چون که فقط تو این تابع و یه تابع دیگه با فایل کار میشه !

درسته که فقط این دو روال به فایل دسترسی دارن ولی نحوه استفاده از این روال ها هم مهمه.


بعدشم توی این کد شما con رو صفر کردید و دیگر مقدار ندادید و بعد در شرط حلقه ازش استفاده کردید. چرا؟

باید کل برنامه رو دید تا بشه نظر داد.

البته اگه Security برنامه در حدی باشه که بشه سورسش رو منتشر کرد !!!

Iran-PC
دوشنبه 15 خرداد 1385, 16:10 عصر
باید کل برنامه رو دید تا بشه نظر داد.

البته اگه Security برنامه در حدی باشه که بشه سورسش رو منتشر کرد !!!

موافقم !!!