Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 2new.rtf
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
620.69 Кб
Скачать

Чтение символа / строки из файла – fgetc / fgets

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

int fgetc(FILE *fileid);

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

Возвращает следующий символ из указанного входного файла fileid. fgets читает символы из файла fileid в строку s. Чтение завершается, когда считаны n - 1 символ или символ конца строки. fgets сохраняет символ конца строки в конце s. В конец s добавляется также нуль-символ, чтобы пометить конец строки.

В случае успешного завершения fgetc возвращает прочитанный символ, преобразованный в тип int без расширения знакового разряда. При успешном выполнении fgets возвращает указатель на строку s. При ошибке или достижении конца файла возвращает EOF.

Пример:

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{ FILE *stream;

char string[] = "This is a test";

char ch;

/* открывает файл для корректировки */

stream = fopen("DUMMY.FIL", "w+");

/* пишет строку в файл */

fwrite(string, strlen(string), 1, stream);

/* позиционирует файл в начало */

fseek(stream, 0, SEEK_SET);

do {

/* читает символ из файла */

ch = fgetc(stream);

/* отображает символ */

putch(ch);

} while (ch != EOF);

/* повторно читает строку из файла */

fseek(stream, 0, SEEK_SET);

fgets(msg, strlen(string)+1, stream);

fclose(stream);

return 0;

}

Форматированный вывод в файл – fprint

Функция форматированного вывода в файл.

int fprint(FILE *fileid, const char *format[, argument, ...]);

fprintf принимает последовательность аргументов argument, форматирует каждый из них в соответствии со спецификацией формата, передаваемой в строке формата, на которую указывает format, и выводит сформатированные данные в файл fileid. Количество спецификаций формата должно совпадать с количеством аргументов. Спецификации формата – см. функцию printf.

Возвращается число выведенных байтов. В случае ошибки возвращается EOF.

Пример:

#include <stdio.h>

int main(void)

{ FILE *stream;

int i = 100; char c = 'C'; float f = 1.234;

/* открывает файл для корректировки */

stream = fopen("DUMMY.FIL", "w+");

/* пишет данные в файл */

fprintf(stream, "%d %c %f", i, c, f);

/* закрывает файл */

fclose(stream);

return 0;

}

Форматный ввод из файла – fscanf

Функция форматного ввода из файла.

int fscanf(FILE *fileid, const char *format [, address,...]);

fscanf посимвольно читает последовательность входных полей из файла fileid. Каждое поле форматируется в соответствии со спецификацией формата, передаваемой fscanf в строке формата, на которую указывает format. Наконец, fscanf записывает форматированный ввод по адресам, переданным в качестве аргументов address, следующих за format. Количество спецификаций формата и адресов должно совпадать с количеством входных полей. См. scanf для деталей о спецификаторах формата. scanf может прекратить обработку текущего поля до достижения обычного символа конца поля (символа-разделителя), или вообще завершиться по различным причинам.

fscanf возвращает количество успешно прочитанных, преобразованных и записанных в память входных полей; возвращаемое значение не включает прочитанные поля, которые не были записаны в память.

Если scanf пытается читать за концом файла, возвращается EOF.

Если ни одно поле не записано в память, возвращается 0.

Пример:

#include <stdlib.h>

#include <stdio.h>

int main(void)

{ int i;

printf("Input an integer: ");

/* читает целое из стандартного входного потока */

if (fscanf(stdin, "%d", &i))

printf("The integer read was: %i\n", i); else {

fprintf(stderr, "Error reading an integer from stdin.\n");

exit(1);

}

return 0;

}