PDA

View Full Version : فایل و لیست پیوندی



mononok
چهارشنبه 22 خرداد 1387, 16:39 عصر
سلام
من با لیست پیوندی یه سری اطلاعات را روی فایل ریختم حالا می خواهم از روی همان فایل اطلاعاتم را روی لیست پیوندی بریزم و بعد چاپش کنم کد زیر را نوشتم ولی درست عمل نمی کنه! در ضمن start اولین خونه هست و y خونه ی قبل از آخرین خونه و x آخرین خونه هست.

void show(void)
{
fp=fopen("project.txt","rb");
rewind(fp);
while(!(feof(fp)))
{
x=(student*)malloc(sizeof(student));
fscanf(fp,"%s %d %d %s %x",x->name,&x->stdno,&x->grade,x->city,&x->next);
if (start==NULL) start=x=y;
else y->next=x;
y=x;
}
if(start!=NULL)
{x=start;
while(x!=NULL)
{printf("%s %d %d %s",x->name,x->stdno,x->grade,x->city);
x=x->next;
}}
fclose(fp);
}

jalil_m
سه شنبه 11 تیر 1387, 00:58 صبح
سلام
من با لیست پیوندی یه سری اطلاعات را روی فایل ریختم حالا می خواهم از روی همان فایل اطلاعاتم را روی لیست پیوندی بریزم و بعد چاپش کنم کد زیر را نوشتم ولی درست عمل نمی کنه! در ضمن start اولین خونه هست و y خونه ی قبل از آخرین خونه و x آخرین خونه هست.

void show(void)
{
fp=fopen("project.txt","rb");
rewind(fp);
while(!(feof(fp)))
{
x=(student*)malloc(sizeof(student));
fscanf(fp,"%s %d %d %s %x",x->name,&x->stdno,&x->grade,x->city,&x->next);
if (start==NULL) start=x=y;
else y->next=x;
y=x;
}
if(start!=NULL)
{x=start;
while(x!=NULL)
{printf("%s %d %d %s",x->name,x->stdno,x->grade,x->city);
x=x->next;
}}
fclose(fp);
}

شما مقدار خونده شده از فايل رو (دفعه اول) فقط توي x ميريزيد.ولي تو شرطتون start رو چك ميكنيد كه خالي نباشه؟ فكر ميكنم بايد x رو چك كنيد.

در ضمن به جاي استفاده ار دستور fscanf فكر ميكنم خيلي راحت تر هستيد اگر از دستور fread استفاده كنيد.(به Help مراجعه كنيد اگر مشكل حل نشد بازهم بگيد ايشالله حل بشه)