C_Kurs_Lekt / C_II_семестр / 10-0_ф-и_для_потоков
.pdfКРАТКИЙ 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 { }