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

Int fprintf(file *fp, char *format [,аргумент]…);

Эта функция выводит данные с преобразованием по заданному форма­ту в открытый файл через поток fp. В случае успеха возвра­­­щает число выведенных байтов (символов), а в случае ошибки – EOF.

Пример 3.5

#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;}

Функция форматированного записи (вывода) в строку имеет прототип:

Int sprintf(char *buf, char *format [,аргумент]…);

Эта функция выводит данные с преобразованием по формату в строку buf. Последний символ устанавливается '\0'. В случае успеха возвра­щает число выведенных байтов (символов), а в случае ошибки – EOF.

Функция форматированного чтения (ввода) из строки имеет прототип:

Int sscanf(char *buf, char *format [,указатель]…);

Эта функция вводит из строки данные с преобразованием по заданному формату и помещает их в ячейки памяти, определяемые указателями. В случае успеха возвращает число обработанных при вводе полей или EOF(–1) в случае ошибки.

Пример 3.6

#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);

return 0;}

Блок – это группа рядом расположенных байтов, между которыми нет никаких специальных разделителей. Для того чтобы не иметь проб­лем с символами '\n', '\0', блоковый ввод-вывод выполняют в бинарном режиме. За одно обращение можно переносить несколько блоков.

Функция блокового записи (вывода) в файл имеет прототип:

Int fwrite(void *ptr, int size, int n, file *fp);

Эта функция записывает через поток fp в открытый файл N блоков, размером size байт каждый, из области памяти, определяемой указа­телем ptr. В случае успеха возвращает число блоков, а в случае ошибки – EOF.

Функция блокового чтения (ввода) из файла имеет прототип:

Int fread(void *ptr,int size,int n,file *fp);

Эта функция считывает через поток fp из открытого файла N блоков, размером size байт каждый, в область памяти, определяемой указателем ptr. В случае успеха возвращает число блоков, а в случае ошибки или достижения конца файла – EOF.

Пример 3.7

#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;}

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