Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1сем Дагаев / ypravleniepamyatuprogrammi_4.pptx
Скачиваний:
13
Добавлен:
09.03.2022
Размер:
479.46 Кб
Скачать

Функции чтения и записи

1.getc ( ) - чтение символа из файла putc ( ) - запись символа в файл

2.fgets ( ) - чтение строки из файла fputs ( ) - запись строки в файл

3.fscanf ( ) - форматированный ввод из файла fprintf ( ) - форматированный вывод в файл

4.fread ( ) - блоковый (двоичный) ввод fwrite ( ) - блоковый (двоичный) вывод

Функции getc ( ) и putc ( )

int getc (FILE* file);

int putc (int c, FILE* file);

char ch; FILE* file;

file = fopen (''my.txt'', ''r''); ch = getc (file);

while (ch != EOF)

{

putchar (ch); ch = getc (file);

}

Возвращают код прочитанного или записанного в файл символа или EOF

Посимвольное копирование строки

FILE *in, *out; int ch;

if ((in = fopen(''in.txt'', ''r'')) == NULL)

{

printf (''Входной файл не открыт\n''); exit(1);

}

if ((out = fopen(''out.txt'', ''w'')) == NULL)

{

printf (''Файл на запись не открыт\n''); exit(2);

}

while ((ch = getc (in)) != EOF) putc (ch, out); if (fclose (in) != 0 || fclose (out) != 0)

printf (''Ошибка при закрытии файлов''); return 0;

Функции fgets ( ) и fputs ( )

#include <stdio.h>

char* fgets (char* s, int n, FILE* file);

#define MAXLINE 10

возвращает указатель на прочитанную строку

int main ( )

или NULL

{

int fputs (const char* st, FILE* file);

char line [MAXLINE];

возвращает код последнего записанного

символа или EOF

FILE *in, *out;

if ((in = fopen (''mystr.txt'', ''r'')) ==NULL)

{

printf(''Входной файл не открыт\n''); exit (1);

}

while (fgets(line, MAXLINE, in) != NULL)

{

puts(line); fputs(line, out);

}

fclose (in); fclose (out); return 0;

}

Функции fscanf ( ) и fprintf ( )

int fscanf (FILE* file, const char* format, ...);

 

fscanf возвращает количество

int num=15;

заполненных переменных

 

fprintf возвращает количество

int fprintf (FILE* file, const char* format, ...);

double f=2.6;

записанных в файл байтов

char st[20]=''numbers:'';

 

FILE* out = fopen(''my.txt'',''w'');

fprintf(out,''%20s%6d%6.2lf'',st,num,f);

fclose(out);

 

#include <stdio.h> #include <stdlib.h> #define N 5

int main()

{

Чтение массива из файла

int mas[N], i=0; FILE* in;

if((in=fopen("num.txt","r"))==NULL)

{

printf("File not found\n"); exit(1);

}

while(!feof(in))

{

fscanf(in,"%d",mas+i); printf("%d %d\n",i,mas[i]); i++;

}

fclose(in); return 0;

}

Проверка чтения из файла

FILE* file; char st[100]; double num;

if ((file = fopen(''text.txt'', ''r''))==NULL)

{

fprintf(stderr, ''Ошибка\n''); exit(1);

}

while (fscanf (file, ''%s%lf'', st, &num) == 2) printf (''%s %lf\n'', st, num);

fclose (file);

Функции fread ( ) и fwrite ( )

size_t fread (void* ptr, size_t size, size_t number, FILE* file);

size_t fwrite (void* ptr, size_t size, size_t number, FILE* file);

Возвращают количество прочитанных/записанных элементов (<=number) или EOF

double mas[4] = {0.5, 0.9, 1.8, 3.7}; FILE* file;

file = fopen (''num'', ''w''); fwrite(mas, sizeof(double), 4, file); fclose(file);

Задача

В текстовом файле записаны несколько чисел.

Написать программу, которая читает файл в массив, увеличивает значения чисел на 10 и сохраняет в текстовый файл, потом увеличивает числа еще на 10 и сохраняет в двоичный файл.

Текст программы (1)

#include <stdio.h> #define N 100

int main()

{

FILE *fin, *bfout, *tfout; int mas[N];

int i, n; fin=fopen("in.txt","r");

Соседние файлы в папке 1сем Дагаев