ورود

View Full Version : مبتدی: feof و لوپ بینهایت



moh_mov
شنبه 18 تیر 1390, 12:19 عصر
سلام.
من در باز کردن و نوشتن فایل در سی به مشکلی بر خوردم.
من می خوام یک فایل رو باز کنم و بعدش اون رو کاراکتر کاراکتر با کاراکتر مورد علاقه خودم جایگزین کنم.
من از زیر استفاده کردم که تو لینوکس کار می کنه اما در محیط ویندوز به یک لوپ بینهایت بر می خوره.


FILE *fp;
fp=fopen(address,"r+");
if(fp == 0)
{
printf("can not find!!");
}
else
{
char w = '0';
while(1)
{
if((w = fgetc(fp)) != EOF)
{
if((w = fgetc(fp)) != EOF)
{
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"0");
}
}
else
{
break;
}
}
}
fclose(fp);

یوسف زالی
شنبه 18 تیر 1390, 13:25 عصر
سلام.
به نظر می رسه که این دستور مشکل زاست:


fseek(fp,-2,SEEK_CUR);

احتمال قوی 2- رو باید 1- کنید.

moh_mov
شنبه 18 تیر 1390, 17:58 عصر
سلام.راه حل fflushf هست.
FILE *fp;
fp = fopen(address,"r+");
if(fp == 0)
{
printf("can not find!!");
}
else
{
int w = '0';
while((w = fgetc(fp)) != EOF)
{
fseek(fp,-1,SEEK_CUR);
fprintf(fp,"0");
fflush(fp);
}
fclose(fp);
}