Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Файлы в Си

Содержание

Тип доступа вызов функции создания (открытия) файлаизменение переменной _fmode (stdio.h)O_TEXTO_BINARY
Файлы в СиТип доступа к файламФайлыТекстовыеДвоичные Тип доступа вызов функции создания (открытия) файлаизменение переменной _fmode (stdio.h)O_TEXTO_BINARY Библиотечные функцииПрефиксныеПоточныеОткрытые файлы операционной системыПрефиксФайл0stdin 1stdout2stderr3stdaux4stdprn Механизм чтения из файла Механизм записи в файлОткрыть файл для записи12387Текстовый файл Двоичный файл01234567 Функции для поточного доступа к файлам Функции поточного ввода-вывода называют стандартными функциями FILE* fopen (const char *filename, const char* mode)возвращает указатель на переменную типа a – открыть файл для обновления, открывает файл для записи в конец b – открыть файл в двоичном режиме.По умолчанию установлен текстовый режим доступа Проверка корректности открытия файла:int main(int argc, char *argv[]){ system( int fclose(FILE *fp) - закрывает файл fp, при успешной работе возвращает 0, …char name[] = ch = fgetc( ) – возвращает символ ch из файла, с которым fputs(str, ) – записать строку str, в файл. Символ перевода на другую fwrite(ptr,size,n,) – записывает n элементов размером size из памяти, начиная с ptr int fseek( , offset, fromwheare) - установить указатель чтения-записи файла на позицию long int n = ftell ( ) – в переменную n передать int ferror( ) возвращает ненулевое значение, если при работе с файлом возникла Примеры работы с файламиЗапись данных в текстовый файл Пример 1. Создать вещественный system( printf( break;	 }	printf( // Закончить цикл	 flag = 0; } while (flag);printf(“Файл создан. Чтение данных из текстового файла Пример 2. На первой строке в файле записана размерность целочисленной матрицы. Далее f = fopen(“data.txt a = new int* [n];for(int i=0;i Пример 3. В текстовом файле записано произвольное количество чисел. Считать данные из f = fopen( // читать элемент и int z = fscanf(f, fscanf(f, Изменение текстового файлаПример 4. В текстовом файле расположен произвольный текст. Не считывая FILE *f1 = fopen( while (1) {// Если чтение прошло неуспешно, значит достигнут конец // файла,// fseek(f1,pos1-strlen(word),SEEK_SET); word[0] = toupper(word[0]); printf( if ( fscanf(f,
Слайды презентации

Слайд 2


Слайд 4 Тип доступа
вызов функции создания (открытия) файла
изменение переменной

Тип доступа вызов функции создания (открытия) файлаизменение переменной _fmode (stdio.h)O_TEXTO_BINARY

_fmode (stdio.h)
O_TEXT
O_BINARY


Слайд 5 Библиотечные
функции
Префиксные
Поточные

Открытые файлы операционной системы
Префикс
Файл
0
stdin
1
stdout
2
stderr
3
stdaux
4
stdprn

Библиотечные функцииПрефиксныеПоточныеОткрытые файлы операционной системыПрефиксФайл0stdin 1stdout2stderr3stdaux4stdprn

Слайд 6 Механизм чтения из файла



Механизм чтения из файла

Слайд 7
Механизм записи в файл

Открыть файл для записи
123
87
Текстовый файл

Механизм записи в файлОткрыть файл для записи12387Текстовый файл

Слайд 8
Двоичный файл
0
1
2
3
4
5
6
7

Двоичный файл01234567

Слайд 9 Функции для поточного доступа к файлам
Функции

Функции для поточного доступа к файлам Функции поточного ввода-вывода называют стандартными

поточного ввода-вывода называют стандартными функциями ввода-вывода.
Си создает

внутреннюю структурную переменную по шаблону FILE (stdio.h).

Слайд 10 FILE* fopen (const char *filename, const char* mode)
возвращает

FILE* fopen (const char *filename, const char* mode)возвращает указатель на переменную

указатель на
переменную типа FILE
константная строка - имя файла
режим

открытия файла

В случае неуспеха функция возвращает значение NULL

Режимы открытия файла
r - открыть для чтения.
w - создать для записи.


Слайд 11 a – открыть файл для обновления, открывает файл

a – открыть файл для обновления, открывает файл для записи в

для записи в конец файла или создает файл для

записи, если файла не существует.
r+ - открыть существующий файл для корректировки (чтения и записи).
w+ - создать новый файл для корректировки (чтения и записи).
a+ - открыть для обновления; открывает для корректировки (чтения и записи) в конец файла, или создает, если файла не существует.
t – открыть файл в текстовом режиме.

Слайд 12 b – открыть файл в двоичном режиме.
По умолчанию

b – открыть файл в двоичном режиме.По умолчанию установлен текстовый режим

установлен текстовый режим доступа к файлу.
Режимы t и

b указываются вторыми символами в строковой переменной mode, например “r+b”.

Слайд 13 Проверка корректности открытия файла:
int main(int argc, char *argv[])
{

Проверка корректности открытия файла:int main(int argc, char *argv[]){ system(

system("chcp 1251");
FILE *f;
char name [] = "prim.txt";

if ((f = fopen(name,"rb"))==NULL) {
printf( "File not found ");
system("PAUSE"); }
else printf( "Ok... ");
system("PAUSE");
return EXIT_SUCCESS;}

Слайд 14 int fclose(FILE *fp) - закрывает файл fp, при

int fclose(FILE *fp) - закрывает файл fp, при успешной работе возвращает

успешной работе возвращает 0, при неуспешной EOF).
int closeall(void) –

закрывает все файлы, открытые в программе, при успешной работе возвращает число закрытых потоков, при неуспешной - EOF.
FILE *freopen(const char *filename, const char* mode, FILE *stream) – закрывает поток stream, открывает поток filename с новыми правами доступа установленными в mode. Если потоки разные, то происходит переадресация потока stream в поток filename.

Слайд 15 …char name[] = "prim.txt";
int

…char name[] =

n;
FILE *f;
printf( “Введите целое число

n: ");
scanf("%d", &n);
freopen(name,"wt",stdout);
for (int i=0;i printf("%d\n",i);
fclose(f);
system("PAUSE");
return EXIT_SUCCESS; …

Слайд 16 ch = fgetc( ) – возвращает

ch = fgetc( ) – возвращает символ ch из файла, с

символ ch из файла, с которым связан указатель.
ch =

getc( <указатель на файл>) – возвращает символ ch из файла, с которым связан указатель.
fputc(ch,<указатель на файл>) – записать символ ch в указанный файл.
putc(ch,<указатель на файл>) – записать символ ch в файл.
fgets(str, n, <указатель на файл>) – прочитать строку str, длиной n символов, или до первого встреченного \n из указанного файла.


Слайд 17 fputs(str, ) – записать строку str,

fputs(str, ) – записать строку str, в файл. Символ перевода на

в файл. Символ перевода на другую строку в файл

не записывается.
fscanf( <указатель на файл>, управляющая строка, ссылка) – универсальная функция считывания из текстового файла.
fscanf(f,”%d”,&n)
fread(ptr,size,n,<указатель на файл>) – считывает n элементов размером size в область памяти, начиная с ptr. В случае успеха возвращает количество считанных элементов, в случае неуспеха – EOF.

Слайд 18 fwrite(ptr,size,n,) – записывает n элементов размером

fwrite(ptr,size,n,) – записывает n элементов размером size из памяти, начиная с

size из памяти, начиная с ptr в файл– в

случае успеха возвращает количество записанных элементов, в случае неуспеха – EOF.

fprintf( <указатель на файл>, управляющая строка, [список аргументов] ) – форматированный вывод в файл.

функции прямого доступа к файлу

rewind( <указатель файла>) – установить указатель файла на начало файла.

Слайд 19 int fseek( , offset, fromwheare) - установить

int fseek( , offset, fromwheare) - установить указатель чтения-записи файла на

указатель чтения-записи файла на позицию offset, относительно позиции fromwheare.



значения fromwheare
SEEK_END – от конца файла,
SEEK_SET – от начала файла,
SEEK_CUR – от текущей позиции.


Слайд 20 long int n = ftell (

long int n = ftell ( ) – в переменную n

файл>) – в переменную n передать номер текущей позиции

в файле.
int z = fgetpos ( <указатель файла>, npos) - в динамической памяти по адресу npos записать номер текущей позиции в файле, в случае успеха функция возвращает 0; в противном случае – любое ненулевое число.
int unlink ( <имя файла>) – удаление файла, при успехе функция возвращает 0, при неуспехе - -1.
int rename( <старое имя>,<новое имя>) – переименованиие файла, при успехе функция возвращает 0, при неуспехе - -1.
int feof ( <указатель на файл>) возвращает 0, если конец файла не достигнут, любое ненулевое число, если достигнут.

Слайд 21 int ferror( ) возвращает ненулевое значение,

int ferror( ) возвращает ненулевое значение, если при работе с файлом

если при работе с файлом возникла ошибка, 0 –

в противном случае.

Слайд 22 Примеры работы с файлами
Запись данных в текстовый файл

Примеры работы с файламиЗапись данных в текстовый файл Пример 1. Создать


Пример 1. Создать вещественный массив случайным образом и сохранить

его в текстовом файле.

#include
int main(int argc, char *argv[])
{ int n;
FILE *f;
int flag = 1;
char name[25];


Слайд 23 system("chcp 1251");
// Создадим цикл, позволяющий корректировать ввод
// имени

system(

файла
do
{
printf( "Введите имя создаваемого файла: ");

scanf("%s",name);
// Попытка открыть файл для чтения. Если такой файл // уже существует, то задать вопрос пользователю
if ((f = fopen(name,"r"))!=NULL)
{
// Заменить существующий файл?

Слайд 24 printf("Файл уже существует. Заменить? (y/n)");
char ch = getch();
//

printf(

Если пользователь нажал кнопку «n», очистить
// экран, вернуться

к началу цикла
if (ch == 'n') { system("cls"); continue; }
}
// В этот блок программы управление попадет только
// если пользователь подтвердил замену или задал имя
// несуществующего файла.
// Создать файл.
if ((f=fopen(name,"w"))==NULL)
{
printf("Ошибка создания файла");
system("PAUSE");

Слайд 25 break;
}
printf("\nВведите размерность массива: ");
scanf("%d",&n);
for(int i=0;i

break;	 }	printf(

y = rand() %100/(rand()%50+1.)-rand()%30;
// На одной строке файла печатать

только 10
// элементов.
if (i>=10&&i%10==0) fprintf(f,"\n");
fprintf(f,"%8.3f",y);
}
// Закрыть файл.
fclose(f);

Слайд 26 // Закончить цикл
flag = 0;
} while

// Закончить цикл	 flag = 0; } while (flag);printf(“Файл создан.

(flag);
printf(“Файл создан. ");
system("PAUSE");
return EXIT_SUCCESS;
}


Слайд 28 Чтение данных из текстового файла

Чтение данных из текстового файла

Слайд 29 Пример 2. На первой строке в файле записана

Пример 2. На первой строке в файле записана размерность целочисленной матрицы.

размерность целочисленной матрицы. Далее – сама матрица. Считать матрицу

в память и вывести ее на экран. Данные записаны в файле data.txt.

int main(int argc, char *argv[])
{
system("chcp 1251");
FILE *f;


Слайд 30 f = fopen(“data.txt", "r");
// Проверка ошибки открытия файла
if

f = fopen(“data.txt

(f==NULL) {
printf("Файл не найден... /n Для окончания работы нажмите

любую клавишу...");
system("pause");
exit(0);
}
int n,m;
// Чтение размерности матрицы
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
int **a;
// Выделение памяти под матрицу

Слайд 31 a = new int* [n];
for(int i=0;i

a = new int* [n];for(int i=0;i

new int [m];
// Чтение матрицы
for(int i=0;i

fscanf(f,"%d",&a[i][j]);
printf("Прочитана матрица: \n");
// Печать элементов матрицы
for( int i=0;i for(int j=0;j printf("%5d",a[i][j]);
printf("\n"); }
system("pause");
}

Слайд 32 Пример 3. В текстовом файле записано произвольное количество

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

чисел. Считать данные из файла в массив и вывести

на экран.

int main(int argc, char *argv[])
{
system("chcp 1251");
FILE *f;


Слайд 33 f = fopen("my.txt", "r");
// Проверка ошибки открытия файла
if

f = fopen(

(f==NULL) {
printf("Файл не найден... /n Для окончания работы нажмите

любую клавишу...");
system("PAUSE");
exit(0);
}
int n=0,y;
int *a;
// пока не конец файла f
while (!feof(f))
{

Слайд 34 // читать элемент и
int z =

// читать элемент и int z = fscanf(f,

fscanf(f,"%d",&y);
if (!z) continue;
// увеличивать счетчик.
n++;
}
// После окончания цикла

в переменной n хранится
// количество целых чисел, записанных в файле.
// Выделить память под массив.
a = new int [n];
// Указатель чтения-записи файла передвинуть в
// начало.
fseek(f,0,SEEK_SET);
// Читать n целых чисел из файла в массив.
for(int i=0;i

Слайд 35 fscanf(f,"%d",&a[i]);
printf("Прочитан массив: \n");
for(int i=0;i

fscanf(f,

Слайд 36 Изменение текстового файла
Пример 4. В текстовом файле расположен

Изменение текстового файлаПример 4. В текстовом файле расположен произвольный текст. Не

произвольный текст. Не считывая весь текст в память изменить

все первые буквы слов на прописные.

int main(int argc, char *argv[])
{
// Откроем файл для чтения с дополнением.
// Символ окончания файла в этом случае
// автоматически удаляется.
FILE *f = fopen("text.txt","r+");


Слайд 37 FILE *f1 = fopen("text.txt","r+");
if (f==NULL) {
printf("Файл не найден.

FILE *f1 = fopen(

\n");
system("PAUSE");
return EXIT_SUCCESS;
}
char word[100];
long pos1;
// Организуем бесконечный цикл для чтения

файла.

Слайд 38 while (1) {
// Если чтение прошло неуспешно, значит

while (1) {// Если чтение прошло неуспешно, значит достигнут конец //

достигнут конец
// файла,
// в этом случае нужно закончить

выполнение цикла
if ( fscanf(f,"%s",word)!=1) break;
// В переменную pos1 получить текущую
// позицию указателя чтения-записи.
pos1 = ftell(f);
// Установить указатель на позицию, с которой было
// считано слово.


Слайд 39 fseek(f1,pos1-strlen(word),SEEK_SET);
word[0] = toupper(word[0]);
printf(" %s\n",word);
// Записать в

fseek(f1,pos1-strlen(word),SEEK_SET); word[0] = toupper(word[0]); printf(

файл измененное слово.
fprintf(f1,"%s",word);
}
fclose(f1);
// Вывод измененного файла на экран
fseek(f,0,SEEK_SET);
while

(1) {


  • Имя файла: fayly-v-si.pptx
  • Количество просмотров: 130
  • Количество скачиваний: 0