- •Программирование на языке c
- •Работа с файлами и строками на языке c
- •Основные теоретические сведения Оператор выбора – switch…case…default
- •Оператор безусловного перехода - goto
- •Функции языка c
- •Определение функции
- •Объявление функции
- •Вызов функции
- •Работа с файлами
- •Открытие файла – fopen
- •Закрытие файла – fclose
- •Перемещение позиции ввода/вывода – fseek
- •Запись символа / строки в файл – fputc / fputs
- •Чтение символа / строки из файла – fgetc / fgets
- •Форматированный вывод в файл – fprint
- •Форматный ввод из файла – fscanf
- •Функции стандартной библиотеки ввода/вывода – stdio.H
- •Функции работы со строками – string.H, mem.H, mbstring.H
- •Задание
- •Варианты задания
Функции стандартной библиотеки ввода/вывода – stdio.H
Функция |
Значение |
void clearerr(FILE *stream) |
Очищает ошибку файла |
int fclose(FILE *stream) |
Закрывает файл |
int fcloseall(void) |
Закрывает все файлы кроме stdin, stdout, stdprn, stderr, stdaux. Возврат – общее число закрытых файлов. |
FILE *_fdopen(int handle, char *type), _wfdopen |
Связывает файл с идентификатором, полученным с помощью creat, dup, dup2, или open |
int feof(FILE *stream) |
Определяет конец файла. Возвращает не 0 если не конец файла. |
int ferror(FILE *stream) |
Определяет ошибку файла |
int fflush(FILE *stream) |
Очищает файл. Возвращает не 0 если успешно. |
int fgetc(FILE *stream) |
Читает символ из файла |
int _fgetchar(void) _fgetwchar |
Читает символ из stdin |
int fgetpos(FILE *stream, fpos_t *pos) |
Рассчитывает позицию для места чтения/записи pos в файле. Возвращает 0 или EBADF или EINVAL |
char *fgets(char *s, int n, FILE *stream) fgetws |
Читает строку символов длиной n-1. |
int fileno(FILE *stream) |
Возвращает идентификатор файла |
int flushall(void) |
Очищает все открытые файлы. Возврат – общее число очищенных файлов. |
FILE *fopen(const char *filename, const char *mode) _wfopen |
Открытие файла |
int fprintf(FILE *stream, const char *format[, argument, ...]) fwprintf |
Форматированный вывод в файл. Возврат – число выведенных байт. |
int fputc(int c, FILE *stream) fputwc |
Запись символа в файл |
int _fputchar(int c) _fputwchar |
Запись символа в stdout |
int fputs(const char *s, FILE *stream) fputws |
Запись строки в файл |
size_t fread(void *ptr, size_t size, size_t n, FILE *stream) |
Чтение n блоков данных длинной по size в буфер ptr |
FILE *freopen(const char *filename, const char *mode, FILE *stream) _wfreopen |
Связь идентификатора с открытым файлом |
int fscanf(FILE *stream, const char *format[, address, ...]) fwscan |
Чтение данных из файла. Возврат – количество обработанных байт. |
int fseek(FILE *stream, long offset, int whence) |
Перемещение указателя на место ввода/вывода в файле |
int fsetpos(FILE *stream, const fpos_t *pos) |
Перемещение указателя на место ввода/вывода в файле |
FILE *_fsopen(const char *filename, const char *mode, int shflag) |
Открывает файл для совместной работы |
char *strncpy(char *dest, const char *src, size_t maxlen) wcsncpy _fstrncpy |
Копирование строки |
long int ftell(FILE *stream) |
Возвращает позицию для места чтения/записи pos в файле. Возвращает 0 или EBADF или EINVAL |
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream) |
Запись n блоков данных длинной по size из буфера ptr |
int getc(FILE *stream) getwc |
Чтение символа из файла |
int getchar(void) getwchar |
Чтение символа из stdin |
char *gets(char *s) _getws |
Чтение строки из файла |
int _getw(FILE *stream) |
Чтение целого числа из файла |
int _pclose(FILE * stream) |
Win32: Закрытие потока (pipe), открытого _popen |
void perror(const char *s) _wperror |
Печать сообщения об ошибке |
FILE *_popen(const char *command, const char *mode) _wpopen |
Win32: Закрытие потока (pipe) |
int printf(const char *format[, argument, ...]) wprintf |
Форматированный вывод на stdout. Возврат – количество выведенных символов. |
int putc(int c, FILE *stream) putwc |
Вывод символа в файл. Возврат – выведенный символ или EOF. |
int putchar(int c) putwchar |
Вывод символа на stdout. Возврат – выведенный символ или EOF. |
int puts(const char *s) _putws |
Вывод строки в файл. Возврат – число выведенных символов или EOF. |
int putw(int w, FILE *stream) |
Вывод целого числа в файл. Возврат – выведенное число или EOF. |
int remove(const char *filename) _wremove |
Удаление файла. Если удачно – возврат 0 |
int rename(const char *oldname, const char *newname) _wrename |
Переименование файла. Если удачно – возврат 0 |
void rewind(FILE *i) |
Перемещение указателя работы с файлом на начало файла |
int rmtmp(void) |
Удаление всех ранее открытых файлов с помощью tmpfile |
int scanf(const char *format[, address, ...]) wscanf |
Форматированный ввод из stdin. Возврат – количество введенных и обработанных полей. |
void setbuf(FILE *stream, char *buf) |
Назначение буфера файлу |
int setvbuf(FILE *stream, char *buf, int type, size_t size) |
Назначение буфера файлу |
int spawnl(int mode, char *path, char *arg0, arg1, ..., argn, NULL) _wspawnl |
Запуск на выполнение программы (дочернего процесса) |
int spawnle(int mode, char *path, char *arg0, arg1, ..., argn, NULL, char *envp[]) _wspawnle |
Запуск на выполнение программы (дочернего процесса) |
int spawnlp(int mode, char *path, char *arg0, arg1, ..., argn, NULL) _wspawnlp |
Запуск на выполнение программы (дочернего процесса) |
int spawnlpe(int mode, char *path, char *arg0, arg1, ..., argn, NULL, char *envp[]) _wspawnlpe |
Запуск на выполнение программы (дочернего процесса) |
int spawnv(int mode, char *path, char *argv[]) _wspawnv |
Запуск на выполнение программы (дочернего процесса) |
int spawnve(int mode, char *path, char *argv[], char *envp[]) _wspawnve |
Запуск на выполнение программы (дочернего процесса) |
int spawnvp(int mode, char *path, char *argv[]) _wspawnvp |
Запуск на выполнение программы (дочернего процесса) |
int spawnvpe(int mode, char *path, char *argv[], char *envp[]) _wspawnvpe |
Запуск на выполнение программы (дочернего процесса) |
int sprintf(char *buffer, const char *format[, argument, ...]) swprintf |
Форматированный вывод на строку. Возврат – количество выведенных байт. |
int sscanf(const char *buffer, const char *format[, address, ...]) swscanf |
Форматированный ввод из строки. Возврат – количество введенных и обработанных полей. |
char *strerror(int errnum) |
Возвращает указатель на строку с заданным кодом ошибки |
char *_strerror(const char *s) |
Создание сообщение об ошибке |
char *strncpy(char *dest, const char *src, size_t maxlen) wcsncpy _fstrncpy |
Копирование строки символов |
char *_tempnam(char *dir, char *prefix) _wtempnam |
Создание временного файла в заданной директории |
FILE *tmpfile(void) |
Открытие временного файла в бинарном режиме |
char *tmpnam(char *s) _wtmpnam |
Создание уникального имени временного файла |
int ungetc(int c, FILE *stream) ungetwc |
Вставка прочитанного символа обратно в файл |
int _unlink(const char *filename) _wunlink |
Удаление файла |
int vfprintf(FILE *stream, const char *format, va_list arglist) vfwprintf |
Форматированный вывод в файл. Возврат – количество выведенных байт. |
int vfscanf(FILE *stream, const char *format, va_list arglist) |
Форматированный ввод из файла. Возврат – количество введенных и обработанных полей. |
int vprintf(const char *format, va_list arglist) vwprintf |
Форматированный вывод на stdout. Возврат – количество выведенных символов. |
int vscanf(const char *format, va_list arglist) |
Форматированный ввод из stdin. Возврат – количество введенных и обработанных полей. |
int vsprintf(char *buffer, const char *format, va_list arglist) vswprintf |
Форматированный вывод на строку. Возврат – количество выведенных байт. |
int vsscanf(const char *buffer, const char *format, va_list arglist) |
Форматированный ввод из строки. Возврат – количество введенных и обработанных полей. |
Функции, содержащие w – для строк Unicode.
Определены также следующие константы:
Константа |
Описание |
BUFSIZ |
Размер буфера по умолчанию для setbuf |
EOF |
Конец файла |
_F_BIN |
Бинарный файл |
_F_BUF |
Захват буфера при помощи malloc |
_F_EOF |
Конец файла |
_F_ERR |
Ошибка файла |
_F_IN |
Данные поступают |
_F_LBUF |
Файл с буфером по строкам |
_F_OUT |
Данные исходят |
_F_RDWR |
Файл для чтения и записи |
_F_READ |
Файл для чтения |
_F_TERM |
Файл – терминал |
_F_WRIT |
Файл для записи |
_IOFBF |
Полная буферизация |
_IOLBF |
Буферизация по мтрокам |
_IONBF |
Нет буферизации |
L_ctermid |
Длина строки идентификатора устройства |
L_tmpnam |
Длина строки имени временного файла |
NULL |
Нулевой указатель 0 |
FOPEN_MAX |
Максимум открытых файлов на процесс |
SEEK_CUR |
Позиция от текущей позиции |
SEEK_END |
Позиция от конца файла |
SEEK_SET |
Позиция от начала файла |
SYS_OPEN |
Максимум открытых файлов в системе |
TMP_MAX |
Максимальное число уникальных идентификаторов (имен) файлов |
Имеются следующие типы данных:
Тип |
Описание |
typedef struct{ short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer, *curp; unsigned istemp; short token; } FILE; |
Описывает свойства открытого файла. где level – уровень; flags– определяет индикатор _F_xxxx; hold – защелка; bsize – размер буфера; buffer – указатель на буфер; istemp – временность; token – вхождения. |
fpos_t |
Позиция указателя места для чтения/записи |
size_t |
Размер памяти |
Определены следующие переменные
Переменная |
Описание |
stdaux |
Стандартное вспомогательное устройство |
stderr |
Стандартное устройство вывода ошибки |
stdin |
Стандартное устройство ввода |
stdout |
Стандартное устройство вывода |
stdprn |
Стандартное устройство печати |