FILE : َ ساختاریه که وظیفش نگه داری اطلاعات در مورد فایل هستش .
*FILE : اشاره گر به FILE
برای باز کردن فایل از fopen استفاده می کنیم :
FILE * fopen ( const char * filename, const char * mode );
ورودی اول محل ذخیره سازی فایل هستش
و ورودی دوم حالتی که می خواهیم فایل باز بشه که این حالت ها به شکل زیر هستن :
-
r : باز کردن فایل برای خواندن . فایل حتما باید وجود داشته باشه
-
w : باز کردن فایل برای نوشتن در صورت موجود نبودن فایل ساخته میشه و در صورت وجود داشتن اطلاعات فایل قبلی پاک میشه .
-
a : فقط اجازه نوشتن به آخر فایل رو به ما میده
-
b : نوشتن در حالت باینری
-
+r : باز کردن فایل برای نوشتن و خواندن
-
+w : کارکرد مثل w هستش با این تفاوت که توی این حالت از فایل اطلاعات رو هم میشه خوند
-
+a : مثل a کار می کنه با این تفاوت که اجازه خوندن فایل رو هم میده
مثال :
FILE *f1=fopen("test.txt","a+");
FILE *f1=fopen("c:\\test","w");
FILE *f1=fopen("c:\\test","wb+");\\write read in binary mode
خواندن و نوشتن داخل فایل :
برای خواندن اطلاعات ار فایل ار این توابع استفاده می کنن : fsacnf , fgets , get نحوه عملکردشون هم مشابه توابع scanf,gets,get که برای خوندن از کنسول استفاده میشن
و برای نوشتن از توبعی مثل fputs,fprintf , ... استفاده کرد
به عنوان مثال این برنامه رو در نظر بگیرید فایل با فرمتی که گفتید رو می خونه و جمع هر سطر رو داخل یک فایل دیگه ذخیره می کنه :
#include <stdio.h>
#include <stdlib.h>
int main()
{
char loc[25];
FILE *file,*output;
printf("file loc ?? ");
gets(loc);
file=fopen(loc,"r");
const int size=4;
int col1[size],col2[size];
int a,b;
int e=0;
while(fscanf(file,"%d %d",&a,&b)!= EOF )
{
col1[e]=a;
col2[e]=b;
++e;
}
printf("output loc ?? ");
gets(loc);
output=fopen(loc,"w");
for(int i=0;i<e;++i)
{
fprintf(output,"%d\n",col1[i]+col2[i]);
}
fclose(file);
fclose(output);
return 0;
}
بعد از نوشتن یا خواندن اطلاعات از فایل حتما باید فایل بسته بشه
برای بستن فایل باید شی که از FILE ساختید رو به fclose بفرستید که داخل مثال بالا هم ازش استفاده کردم .