PDA

View Full Version : خواندن یک رشته از فایل



مهدی رحیم زاده
شنبه 02 تیر 1386, 19:19 عصر
من نمی دونم که چرا نمیتونم از فایل ها اطلاعات رو بخونم ...
این برنامه رو نگاه کنید و دلیلش و بگید ...
نه با fgets و نه با fread....

saeid5977
یک شنبه 03 تیر 1386, 01:14 صبح
اگه تحت داس هستی فکر نمیکنی پسوند فایلها باید حداکثر 3 حرفی باشه؟

مهدی رحیم زاده
یک شنبه 03 تیر 1386, 20:37 عصر
با پسوند سه حرفی هم جواب نداد

مهدی رحیم زاده
دوشنبه 04 تیر 1386, 19:25 عصر
یکی پیدا نمیشه که بگه چکار کنم این برنامه درست بشه ؟؟؟

sara_she
سه شنبه 05 تیر 1386, 09:58 صبح
مشکل خوندن از فایل نیست مشکل نوشتن در فایله . اگه برنامه رو با f8 خط به خط اجرا کنی و بعد از fput فایل fp1 بری نگاهی به این فایل در درایو c بندازی می بینی که خالی است و اصلا چیزی توش نوشته نشده که بخواد ازش خونده بشه . می تونی fprinf رو تست کنی من باهاش کار کردم و مشکلی نداشتم

someCoder
سه شنبه 05 تیر 1386, 13:13 عصر
من نمی دونم که چرا نمیتونم از فایل ها اطلاعات رو بخونم ...
این برنامه رو نگاه کنید و دلیلش و بگید ...
نه با fgets و نه با fread....

اگر تکه اول کدت رو که کار نمیکنه میذاشتی، همون روز اول برات درست میکردم! هرچی کدت بیشتر باشه، احتمال اینکه بقیه وقت خوندن کدت رو داشته باشن کم میشه.

تو این کد، قسمتهایی که دستکاری کردم رو رنگی کردم:


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(void)
{
FILE *fp1,*fp2,*fp3;
char ch1[80],ch2[80],ch3[160];

printf("\nPlease input your text:");
scanf("%s",ch1);

fp1=fopen("c:\\fp1.text","w+t");
if(fp1==NULL){
printf("cannot open fp1.text\n");
exit(1);
}else{
fputs(ch1,fp1);
}

fp3=fopen("c:\\fp3.text","wt");
if(fp3==NULL){
printf("cannot open fp3.text\n");
exit(1);
}else{
ch1[0]=NULL;

fseek(fp1, 0, SEEK_SET);
fgets(ch1,76,fp1);

fputs(ch1,fp3);
fcloseall();
}

//read and write to first and thired files
printf("\n please input your text:");
scanf("%s",ch2);
//
fp2=fopen("c:\\fp2.text","w+t");
if(fp2==NULL){
printf("cannot open fp2.text\n");
exit(1);
}else{
fputs(ch2,fp2);
}
fp3=fopen("c:\\fp3.text","at");
if(fp3==NULL){
printf("cannot open fp3.text\n");
exit(1);
}else{
//ee
ch2[0]=NULL;

fseek(fp2, 0, SEEK_SET);
fgets(ch2,76,fp2);


fputs(ch2,fp3);
}

fcloseall();
fp3=fopen("c:\\fp3.text","r+t");
if(fp3==NULL){
printf("cannot open fp3.text\n");
exit(1);
}else{
ch3[0]=NULL;
fgets(ch3,76,fp3);
}
printf("%s",ch3);
fcloseall();
//getch();
}


فقط برام خیلی جالب بود که همه جا fcloseall رو بدون () نوشته بودی!

someCoder
سه شنبه 05 تیر 1386, 13:16 عصر
اگه برنامه رو با f8 خط به خط اجرا کنی و بعد از fput فایل fp1 بری نگاهی به این فایل در درایو c بندازی می بینی که خالی است و اصلا چیزی توش نوشته نشده که بخواد ازش خونده بشه .اگر میخواین در حین اجرای برنامه محتوای فایل رو چک کنین، حتما باید close بشه، بعد نگاه کنین تا بفهمین چی شده توی فایل. (قضیه بافر کردن رو که میدونین چیه؟)