PDA

View Full Version : سوال: چرا کاراکتر آخر فایل دو بار چاپ میشه؟



imi
دوشنبه 03 تیر 1387, 19:32 عصر
به این کد نگاه کنید:
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
fstream f;
char ch;
f.open("h:\\test.txt",ios::in|ios::out|ios::binary);
while(!f.eof())
{
f.get(ch);
cout << ch << endl;
}
}
چرا کاراکتر آخر فایل دو بار چاپ میشه؟ چه کار کنیم که فقط یه بار چاپ شه؟ یعنی چه کار کنیم که حلقه یه بار زیادی اجرا نشه؟ چرا یه بار حلقه ریاد اجرا میشه؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!!!!!!! !!!!!

mzjahromi
دوشنبه 03 تیر 1387, 20:28 عصر
چونکه اول کاراکتر رو میخونی , مینویسی و بعد eof رو چک می کنی. در واقع اون آخریه خونده نشده همون قبلی هست ولی چون به انتهای فایل برخورد کرده مقدار ch تغییر نکرده و تو دوباره مینویسیش.

soroush68
چهارشنبه 02 مرداد 1387, 15:15 عصر
f.get(ch) رو داخل پرانتر های while بنویس حل میشه (یعنی به جای feof )