Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C_Kurs_Lekt / C_II_семестр / 10-0_ф-и_для_потоков

.pdf
Скачиваний:
10
Добавлен:
13.02.2016
Размер:
123.36 Кб
Скачать

КРАТКИЙ HELP ПО ПОТОКОВЫМ ФУНКЦИЯМ

1

Функции для работы со стандартными потоками stdin, stdout, stderr.

int getchar(void); возвращает один введенный символ, в случае ошибки возвращает EOF int putchar(int с); возвращает только что выведенный символ

char * gets (char * s); возвращает указатель на строку, если ошибка - то NULL.

int puts (char * s); возвращает последний выведенный символ (т.е. '\n'), если ошибка - EOF.

Функции для работы с файлами на диске

FILE *fopen(const char *filename, const char *mode); -

*filename – указатель на строку с именем файла, *mode – указатель на строку с режимом открытия. Возвращает указатель на поток.

В случае error, fopen возвращает NULL

int fgetc(FILE *stream); getc() - ввод (чтение) одного символа из файла; В случае end-of-file или error, fgetc возвращает EOF

int fputc(int c, FILE *stream);, putc() - запись одного символа в файл; Возвращает записанный символ, в случае error, fputc возвращает EOF

int fprintf (FILE *stream, const char *format [, argument, ...]); - форматированный вывод в файл. stream – указатель на файл, *format –форматная строка, argument –аргументы. (‘\n’ из строки выводится как CR и LF)

Возвращает число выведенных байт или EOF при error.

int fscanf (FILE *stream, const char *format [, address, ...]); - форматированный ввод (чтение) из файла. stream – указатель на файл, *format –форматная строка, argument –аргументы. ( спецификатор %s считывает до пробельного символа).

Возвращает число введенных элементов или EOF при error.

char *fgets(char *s, int n, FILE *stream); - ввод (чтение) строки из файла.

*s – указатель на сроку; n – кол-во считываемых символов, *stream - указатель на поток.

Считывает n – 1 и дописывает в строку ‘\0’ или до CR(13) LF(10) (тогда переносит CR LF как ‘\n’=LF=’\10’ дописывает в строку ‘\0’;

Возвращает указатель на строку или NULL (при EOF или error).

int fputs(const char *s, FILE *stream); - запись строки в файл.

*s – указатель на сроку; *stream - указатель на поток.

Символ ‘\0’ из строки в файл не дописывает и перевод строки в файле не добавляет (‘\n’ записывает как CR LF если ‘\n’ присутствует в строке *s);

Возвращает последний записанный символ или EOF при error.

size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream); - пересылает в файл заданное число байт, начиная с указанного адреса памяти;

ptr – указатель на объект, данные которого выводятся в поток начиная с ptr; size – длина одного пересылаемого участка, n – число пересылаемых участков, stream – указатель на поток в который осуществляется вывод

Возвращает число записанных элементов или EOF при error.

size_t fread(void *ptr, size_t size, size_t n, FILE *stream); - пересылает заданное число байт из файла в массив в памяти.

ptr – указатель на объект, в которого пересылаются данные; size – длина одного пересылаемого участка, n – число пересылаемых участков, stream – указатель на поток из которого осуществляется считывание данных.

Возвращает число считанных элементов или при ошибке или признаке EOF возвращает, обычно 0.

int fseek(FILE *stream, long offset, int whence); устанавливает указатель в потоке на новую позицию. *stream –

указатель на поток, offset - смещение (long, 0L), whence – начало отсчета (SEEK_SET=0; SEEK_CUR=1; SEEK_END=2).

Возвращает 0 и перемещает указатель при успехе и возвращает не 0 при ошибке. fseek(fp, 0L, SEEK_SET); - в начало файла

fseek(fp, 0L, SEEK_END); - в конец файла

fseek(fp, (long)Sizeof(st), SEEK_CUR); на одну запись вперед fseek(fp, (Num-1)*Sizeof(st), SEEK_SET); переход к записи Num

void rewind(FILE *stream); rewind(stream) <==> fseek(stream, 0L, SEEK_SET)

long ftell(FILE *stream) - возвращает значение указателя текущей позиции в потоке, если error – “-1”

int feof(FILE *stream) - возвращает ненулевое значение(true), если конец файла, иначе 0.

КРАТКИЙ HELP ПО ПОТОКОВЫМ ФУНКЦИЯМ

2

Конец файла: а)

while(1) { fgetc(stream);

if(feof(cfPtr)) {/* если данные исчерпаны – то выход */ break;} j++; }

б) while(1) {

if (fread( ) == NULL) break; /* if( (c=fgetc()) == EOF) */ j++; }

в)

while (!feof(stream))

{ }

Отêрытие с проверêой

if ((cfPtr = fopen(name, "r+")) == NULL) perror(name); else { }