Файлы Лекетор Махметова А. М.
Файл – это информация, размещенная на каком-либо носителе (диске) или в буфере ввода/вывода устройства (клавиатура). Для обмена данными файл должен быть открыт, по завершении этого процесса – закрыт.
Функции для работы с файлами fopen(); - открыть файл. fopen(“адрес файла /имя“, ”тип доступа “); При работе с файлами используются указатели: FILE *fp; Тип FILE указан в заголовочном файле
“r” – открытие файла для чтение (файл должен быть создан); “w” – открытие пустого файла для записи данных; “a” – открыть файл для добовление данных. Запись осуществляется в конец файла; “r+” – открытие файла для записи и для чтения; “w+” – открытие файла для чтения и записи; “a+” – открытие файла для чтения и для записи данных в конец файла; “t” – открытие файла в текстовом режиме (rt, wt, at); “b” – открытие файла в двоичном режиме (rb, wb, ab);
Функции для закрытия файла, после завершения работы с файлами: fclose (указатель файла); Пример: fclose (fp); Для записи и чтения с файла используются стандартные функции ввода /вывода. Все действия связанные с файлами можно разделить на три группы: • Операции ввода/вывода символов; • Операции ввода/вывода символьных строк; • Операции по блочного ввода/вывода.
Общие функции ввода/вывода: fprint (fp, ”шаблон спецификации“, выражения); fscanf (fp, ”шаблон спецификация“, адрес); Операции ввода/вывода символов (с файла считывается или записывается один символ): fgets(FILE *fp); Чтение и возврат символа из открытого файла; fputs(int ch, FILE *fp); Записывает в файл код ch символа;
Операции ввода/вывода символьных строк getc(char *S); Читает байты из файла байты данных и записывает их в строку S до тех пор, пока не встретит символ 'n', который заменяется на нуль – терминатор; fgetc(char *S, int m, FILE *fp); Извлекает байты из файла, описываемого fp, и записывает их в строку S до тех пор, пока не встретит символ 'n' или пока не будет считана m байтов;
Блок бойынша енгізу/шығару операциялары fread (void *ptv, int size, int n, FILE *fp); Считывает n блоков по size байт каждый из файла fp, в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок); fwrite (void *ptv, int size, int n, FILE *fp); Записывае n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp.
Запись чисел в файл #include
Запись в конец файла #include
Считать с файла числа, о определяет количество четных чисел и их сумму #include
if ((fp=fopen(fname, "rt"))==NULL) {printf("n ochibka"); getch(); } puts(" chislo iz faila n"); while(!feof(fp)) { fscanf(fp, "%i", &y); printf( "%i ", y); if (y%2==0) {s+=y; k=k+1; } } fclose(fp); printf ("n s=%i, kol-vo k=%i", s, k ); getch(); }
Запись в файл (Ctrl+Z завершение записи) #include
else { printf ("Enter id, name, gpi n"); printf ("posle vvoda Enter EOFn" ); printf("? ="); scanf("%d %s %f", &id, &name, &gpi); while(!feof(stdin)){ fprintf(cfptr, "%d %s %2. 1 fn", id, name, gpi); printf("? ="); scanf("%d %s %lf", &id, &name, &gpi); } fclose(cfptr); } return 0; }
Чтение с файла #include
else { printf ("n%-10 s| %-13 s |%s n", "id", "name", "gpi"); printf("------------n"); fscanf(cfptr, "%d%s%lf", &id, &name, &gpi); while(!feof(cfptr)){ printf("%-10 d|%-13 s |%7. 2 fn", id, name, gpi); fscanf(cfptr, "%d %s %lf", &id, &name, &gpi); } fclose(cfptr); } return 0; }