PDA

View Full Version : این کد ویرایش با نوع Int درست کار میکنه ولی چرا با نوع char جواب نمیده



c_doost
جمعه 03 تیر 1390, 13:16 عصر
سلام این کد که میگذارم برای ویرایش یک رکورد در فایل هست زمانی که رکوردی که میخوام ویرایش کنم پارامتر بازیابی اون فیلد id که نوعش int هست درست کار میکنه ولی روی نوع char کار نمیکنه
دلیلش چیه ؟

این کد ویرایش با فیلد char هست که جواب نمیده اگه همینو با فیلد id که از نوع int هست جواب میده :



void edit()
{
char en[91];
ifstream in("dic.dat",ios::in|ios::binary);
ofstream out("temp.dat",ios::out |ios::binary);
clrscr();
cout<<"please enter a enword";
cin>>en;
while(in.read((char *)&translation,sizeof(struct translate)))
{
if(translation.enword==en)
{
cout<<"enter a new a information";
cout<<"enword";
cin>>translation.enword;
cout<<"faword";
cin>>translation.faword;
}
out.write((char *)&translation,sizeof(struct translate));
} //endwile
in.close();
out.close();
remove("dic.dat");
rename("temp.dat","dic.dat");

getch();
}





با تشکر

quiet_programmer
شنبه 04 تیر 1390, 09:47 صبح
با سلام.

احتمالا وقتی شما میخواین ادیت کنین، رکورد رو تو فایل پیدا نمیکنه. اگه آره:
این خط اشتباهه. شما نمیتونین یه آرایه رو با عملگر == مقایسه کنین.

از دستور strcmp استفاده کنید. در ضمن شما بجای استفاده از دو فایل برای ویرایش میتونین از یه فایل استفاده کنید به این صورت که فایل رو بصورت ios:ate باز کنید و اشاره گرنوشتن رو به ابتدای رکوردی که میخواین ویرایش کنین ببرین و دستور نوشتن رو بدین در این صورت رکورد جدید بر روی رکورد قبلی اوررایت میشه.
موفق باشین