Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dop_Prog_3cem_2010.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
874.5 Кб
Скачать

3 Робота з файлами

3.1 Відкриття та закриття файлів

Приклад 3.1

#include<stdio.h>

int main()

{FILE *fp; char *fname ="myfile.txt";

char buff[100];

fp=fopen(fname,"r");

if((fp!=NULL) fgets(buff,50,fp);

else {puts("ERROR_1"); return -1;}

puts(buff);

fp=freopen(fname,"a",fp);

if(fp)!=NULL) fputs("abcdef",fp);

else {puts("ERROR_2"); return -1;}

fclose(fp);

return 0;}

Приклад 3.2

#include<stdio.h>

int main()

{FILE *ptr fopen("abc.doc","r");

if(ptr==NULL)

{perror("Не могу открыть файл: "); return -1;}

char c=fgetc(ptr);

fclose(ptr);

return 0;}

Приклад 3.3

#include<stdio.h>

int main()

{FILE *fin=fopen("fname.txt","wb");

if(fin==NULL){puts("ошибка открытия файла"); return -1;}

unsigned ff, hndl;

ff=fin->flags;

hndl=fin->fd;

printf("%#x %d\n",ff,hndl);// 0x46 6

return 0;}

3.2 Введення даних в файл та виведення даних з файлу

Приклад 3.4

#include<stdio.h>

int main()

{char s1='Z', str1[]="Запорожье", s2;

FILE *fp1=fopen("abc.txt","w");

if(fp1==NULL){puts("ошибка открытия файла"); return -1;}

fputc(s1,fp1);

while(str1[i]!='\0')

{fputc(str1[i],fp1); i++;}

fputc('\n',fp1);

printf("Введите символ или or Ctrl-Z");

while((s2=getchar())!=EOF)

fputc(s2,fp);

fclose(fp1);

FILE *fp2=fopen("abc.txt","r");

if(fp2==NULL){puts("ошибка открытия файла"); return -1;}

char s3,str2[10], s4;

s3=fgetc(fp2);

printf("%c\n",s3);

for(int j=0;j<9;j++)

{str2[j]=fgetc(fp2);

printf("%c",str2[j]); }

while((s4=fgetc(fp2))!=EOF)

putchar(s4);

fclose(fp2);

return 0;}

Приклад 3.5

#include<stdio.h>

int main()

{FILE *fp1=fopen("abc.txt","w");

if(fp1==NULL){puts("ошибка открытия файла"); return -1;}

char *st1="Физика",*ms1[3]={"ТЕК","КЕ","ПТЦА"};

fputs(st1,fp1);

fputs("\n",fp1);

for(int i=0;i<3;i++)

{fputs(mst1[i],fp1);

fputs("\n",fp1); }

fclose(fp1);

FILE *fp2=fopen("abc.txt","r");

if(fp2==NULL){puts("ошибка открытия файла"); return -1;}

char st2[20], mst2[3][20];

fgets(st2,20,fp2);

puts(st2);

for(int j=0;j<3;j++)

{fgets(mst2[j],20,fp2);

puts(mst2[j]); }

fclose(fp2);

return 0;}

Приклад 3.6

#include<stdio.h>

#include<string.h>

void main()

{FILE* fp=fopen("b.txt","w");

int n=0;

char st1[]="Anna", st2[]="Маria",st3[20];

//char st1[]="Anna\n", st2[]="Маria\n",st3[20];

fputs(st1,fp); fputs(st2,fp);

fclose(fp);

fp=fopen("b.txt","r");

while(fgets(st3,20,fp)!=NULL)

{puts(st3); n++;}

printf("Число строк=%d",n);

fclose(fp);}

Приклад 3.7

#include<stdio.h>

int main()

{FILE *fp=fopen("abc.txt","w");

if(fp==NULL){puts("ошибка открытия файла"); return -1;}

int a=5; float b=3.56; long c=50000;

fprintf(fp1,”%d %f %ld\n”,a,b,c);

int arr[5]={1,2,3,4,5};

float mas[5]={1.1,2.2,3.3,4.4,5.5};

for(int i=0;i<5;i++)

fprintf(fp,"%d %f\n",arr[i],mas[i]);

if((fp=freopen("data.txt","r",fp))==NULL)

int n; float f; long k;

fscanf(fp,"%d %f %ld\n",&n,&f,&l);

printf("%d %.2f %ld\n",n,f,k);

int a[5]; float m[5];

for(int j=0;j<5;j++)

{fscanf(fp,"%d %f\n",&a[j],&m[j]);

printf("%d %.2f\n",a[j], m[j]);}

fclose (fp);

return 0;}

Приклад 3.8

#include<stdio.h>

int main()

{int a1=10; long b1=50000; char buf1[20];

sprintf(buf1,"a1=%d, b1=%ld",a1,b1);

puts(buf1);

float e, pi;

char buf2[25]="2.718281, 3.141592";

sscanf(buf2,"%f, %f",&e,&pi);

printf("e=%f pi=%f\n",e,pi);

int a2; long b2;

sscanf(buf1,"a1=%d, b1=%ld",&a2,&b2);

printf("a2=%d b2=%ld\n",a2,b2);

return 0;}

Приклад 3.9

#include<stdio.h>

int main()

{FILE *fp1=fopen("abc.txt","wb");

if(fp1==NULL){puts("ошибка открытия файла"); return -1;}

struct REC{int a; float b[2];};

REC str1={1, 2.2, 3.3};

fwrite(&str1,sizeof(REC),1,fp1);

REC str2[3]={{1, 1.2, 1.3},{2, 2.2, 2.3},{3, 3.2, 3.3}};

fwrite(str2,sizeof(REC),3,fp1);

fclose(fp1);

FILE *fp2=fopen("abc.txt","rb");

if(fp2==NULL){puts("ошибка открытия файла"); return -1;}

REC str3, str4[3];

fread(&str3,sizeof(REC),1,fp2);

printf("%d %.1f %.1f\n", str3.a, str3.b[0],str3.b[1]);

fread(str4,sizeof(REC),3,fp2);

for(int i=0;i<3;i++)

{printf("%d ", str4[i].a);

printf("%.1f %.1f\n", str4[i].b[0],str4[i].b[1]);}

fclose(fp2);

return 0;}

Приклад 3.10

#include<stdio.h>

#define n 3

struct REC{unsigned id;

char name[20];

unsigned mark;};

int main()

{FILE *out,*in;

REC rec;

int flag, sz=sizeof(REC);

long len,kol,n;

if((out=fopen("mark.txt","wb"))==NULL)

{perror("Выходной файл не открыт"); return 1; }

do{

puts("Введіть № запису, прізвище, оцінку(0..5)");

scanf("%d",&rec.id);

gets(rec.name);

scanf("%d",&rec.mark);

fwrite(&rec,sz,1,out);

puts("Продолжить ввод? Да-1, Нет-0");

scanf("%d",&flag);

}while(flag);

fclose(out);

if((in=fopen("mark.txt","rb"))==NULL)

{perror("Входной файл не открыт"); return 2;}

fseek(in,0,SEEK_END);

len=ftell(in);

kol=len/sz;

printf("В файлі %d записів\n", kol);

puts("Введіть номер запису для читання:");

scanf("%ld",&n);

if(n>0&&n<=kol)

{fseek(in,(i-1)*sz, SEEK_SET);

fread(&rec,sz,1,in);

printf("id=%d name: %s ", rec.id_rec,rec.name);

printf("mark: %d\n",rec.mark); }

else puts("Поза файлом!");

fclose(in);

return 0; }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]