- форматированный.
Наиболее распространенным способом ввода\вывода при работе с файлами на Си является неформатированный ввод\вывод. При использовании этого способа чтение или запись файл производится байтовыми блоками определенного размера.
1. Неформатированный ввод\вывод.
Неформатированная запись данных в поток:
int fwrite(void *buf, int size, int count, FILE *stream);
Функция записывает <соunt> записей, каждая размером size байтов из области *buf в выходной поток stream. Указатель файла, связанный с потоком stream увеличивается на количество записанных байт. Функция возвращает количество явно помещенных в файл записей, т.е. если возвращаемое значение будет <count>, то была ошибка.
Неформатированное чтение данных из потока.
int fread(viod *buf, int size, int count, FILE *stream);
Функция читает <count> элементов данных, каждый размером size байт из выходного потока stream и помещает в область buf. Указатель файла увеличивается на число прочитанных байт. Функция возвращает количество реально прочитанных элементов, которое может быть<соunt>, если имела место ошибка, или встретился конец файла, раньше, чем было прочитано count элементов.
2. Символьный ввод \вывод.
Чтение — запись символа.
int fgetc(FILE *stream) — функция читает один символ из указанного файла с текущей позиции, далее это значение приводится к типу int и указатель файла перемещается на следующий символ. Возвращает EOF, если произошла ошибка или достигнут конец файла.
int fputc(char ch, FILE *<имя файловой переменной>) — символ ch записывается в указанный выходной поток. Если запись произошла успешно возвращается значение ch целого типа, иначе EOF.
Чтение — запись строки.
char * fgets(char *s, int n, FILE * stream) — читает строку из указанного входного потока и помещает по адресу з. Символы читаются из файла до тех пор, пока не будет прочитан символ новой строки, который включается в строку s или пока не будет достигнут конец потока, или пока не будет прочитано (n-1) символов; результат помещается в строку s и завершается строка символом '\0'. Если считывание произошло успешно, то возвращается адрес строки s, иначе NULL.
int fputs(char *s, FILE *stream) — функция копирует строку s в указанный поток, причем '\0' отбрасывается. Если при записи возникает ошибка, функция возвращает признак EOF, иначе последний записанный символ.
3. Форматированный ввод/вывод.
Запись данных в поток по формату.
int fprintf(FILE *stream, char ~<форматная строка>[,<аргумент>]);
Функция выполняет форматные преобразования данных, предназначенных для вывода н-нечати- последовательности символов в выходной поток. Каждый аргумент преобразуется и выводится согласно формату преобразования, определенному в форматной с оке. Вид форматной строки смотреть в функции printf) Функция возвращает количество записанных символов.
Чтение из потока по формату.
int fscanf(FILE ~stream, char * formatstring[,<аргумент>])
Функция читает данные из указанного входного потока, выполняет форматные преобразования и полученное значение записывает в переменные, адреса которых задаются последним параметром. Форматная строка имеет вид, что и у scanf. Функция возвращает количество успешно прочитанных элементов вша, или признак EOF, если достигнут конец файла.
Когда программа начинает выполняться, автоматически открываются, пять потоков, из которых основными являются:
- стандартный поток ввода (на него ссылаются, используя предопределенный указатель на поток stdin);
- стандартный поток вывода (stdout);
- стандартный поток вывода сообщает об ошибках (stderr)
По умолчанию стандартному потоку ввода stdin ставится в соответствие клавиатура, а потокам stdout и stderr – экран дисплея.
Для вв/выв с помощью стандартных потоков в библиотеке яз.С определены следующие функции:
- getch()/putch()
- gets()/puts()
- scanf()/printf()
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.