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

3.2 Запись данных в файл и чтение данных из файла

Функция посимвольной записи в файл имеет прототип:

Int fputc(int ch, file *fp);

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

Функция посимвольного чтения из файла имеет прототип:

Int fgetc(file *fp);

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

Пример 3.3

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

Функция построчной записи в файл имеет прототип:

Int fputs(char*string, file *fp);

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

Функция построчного чтения из файла имеет прототип:

char*fgets(char *string,int N,FILE *fp);

Эта функция принимает байты из открытого файла и размещает их по адресу, заданному указателем string. Прием завершается после при­ема N байт или при получении символа '\n', который тоже передает­ся в строку string. Последним символом является '\0'. В случае успеха возвращает указатель на строку string, а в случае ошибки или достижения конца файла – NULL–указатель. Для успешного чтения строки из файла надо зарезервировать достаточное место в памяти.

Пример 3.4

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

Форматированный ввод-вывод данных является частным случаем строкового ввода-вывода. Особенность этого ввода-вывода то, что при переносе данных между файлом через открытый поток и программой происходит преобразование этих данных в соответствии с заданными спецификаторами формата.

Функция форматированной записи в файл имеет прототип:

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