...StacK...
پنج شنبه 08 مرداد 1388, 01:28 صبح
سلام.
به کد زیر نگاه کنید؟؟؟
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
FILE *in,*out;
char ch;
clrscr();
in=fopen("test.dat","w");
if(!in){
printf("cannot open file\n");
getch();
exit(1);
}
printf("\n enter characters($ for end):");
do{
ch=getchar();
putc(ch,in);
}while(ch!='$');
fclose(in);
out=fopen("output.dat","w");
if(!out){
printf("cannot open out file");
getch();
exit(1);
}
in=fopen("test.dat","r");
if(!in){
printf("can not open input file");
getch();
exit(1);
}
ch=getc(in);
while(ch!=EOF){
putc(ch,out);
ch=getc(in);
}//end of while
fclose(in);
fclose(out);
printf("\n file test.dat transfered to output.dat.");
getch();
return 0;
}
وقتی برنامه رو اجرا میکنیم یه فایل به نام test.dat ساخته میشه
و تقاضای یه رشته برای نوشتن روی فایل میکنه ,که من رشته barnamenevis.org رو دادم
و enter رو زدم,حالا فایل test.dat رو با ادیتور باز کردم ولی هیچی توش نوشته نشده بود
با توجه به این قطعه کد:
do{
ch=getchar();
putc(ch,in);
}while(ch!='$');
وقتی که ما رشته رو وارد کردیم و enter رو زدیم کل رشته از بافر باید بر روی فایل نوشته بشه
پس چرا نوشته نشده بود؟؟؟ ایا حتما باید فایل بسته شه تا داده ها رو فایل نوشته بشه؟؟؟
در این صورت حجمی که بافر میتونه داده ها رو در خودش ذخیره کنه چند بایته؟؟؟
یعنی مثلا چند هزار کاراکتر رو از ورودی میدیم .....بافر سر ریز نمیشه؟؟؟
ایا تابع یا راهی وجود داره که مقدار موجود در بافر را کنترل کنیم و اگر به حدی معینی رسید
به کاربر اخطار لازم رو بدیم؟؟؟
به کد زیر نگاه کنید؟؟؟
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
FILE *in,*out;
char ch;
clrscr();
in=fopen("test.dat","w");
if(!in){
printf("cannot open file\n");
getch();
exit(1);
}
printf("\n enter characters($ for end):");
do{
ch=getchar();
putc(ch,in);
}while(ch!='$');
fclose(in);
out=fopen("output.dat","w");
if(!out){
printf("cannot open out file");
getch();
exit(1);
}
in=fopen("test.dat","r");
if(!in){
printf("can not open input file");
getch();
exit(1);
}
ch=getc(in);
while(ch!=EOF){
putc(ch,out);
ch=getc(in);
}//end of while
fclose(in);
fclose(out);
printf("\n file test.dat transfered to output.dat.");
getch();
return 0;
}
وقتی برنامه رو اجرا میکنیم یه فایل به نام test.dat ساخته میشه
و تقاضای یه رشته برای نوشتن روی فایل میکنه ,که من رشته barnamenevis.org رو دادم
و enter رو زدم,حالا فایل test.dat رو با ادیتور باز کردم ولی هیچی توش نوشته نشده بود
با توجه به این قطعه کد:
do{
ch=getchar();
putc(ch,in);
}while(ch!='$');
وقتی که ما رشته رو وارد کردیم و enter رو زدیم کل رشته از بافر باید بر روی فایل نوشته بشه
پس چرا نوشته نشده بود؟؟؟ ایا حتما باید فایل بسته شه تا داده ها رو فایل نوشته بشه؟؟؟
در این صورت حجمی که بافر میتونه داده ها رو در خودش ذخیره کنه چند بایته؟؟؟
یعنی مثلا چند هزار کاراکتر رو از ورودی میدیم .....بافر سر ریز نمیشه؟؟؟
ایا تابع یا راهی وجود داره که مقدار موجود در بافر را کنترل کنیم و اگر به حدی معینی رسید
به کاربر اخطار لازم رو بدیم؟؟؟