- •Int fact(int n)
- •Int fact(int n)
- •Void main()
- •Void main()
- •Void main()
- •Int AkkR(int m, int n);
- •Int main()
- •Int AkkR(int m, int n)
- •Int main()
- •Int smacc(int, int);
- •Int test(char *s, char *r)
- •Void main() { Stepp(""); }
- •Int step(int X, int y)
- •If (step(X-1, y))
- •If (step(X, y-1))
- •Void main(void)
- •Void main()
- •Int rings;
- •Init(rings);
- •Void convert (int z)
- •Void f(struct man *q)
- •Int mark[4];
- •Void main()
- •Void proc(man *p)
- •Void main()
- •Void main()
- •Int telephon;
- •Void main()
- •Void fNumber(number * const doc)
- •Void main()
- •Int main()
- •Void main()
- •Void main()
- •Void main()
- •Int fgets (char *s, int m, file *f);
- •Int fputs (char *s, file *f);
- •Void main()
- •Int fread( void *ptr, int size, int n,
- •Int fwrite( void *ptr, int size, int n,
- •Int rate;
- •Void main()
- •Int fseek(file *fp, long pos, int mode);
- •Void main()
- •Int np, n, I; long p[5]; char str[80];
- •Void main()
- •Int main() {
- •Int fread (void *buf, int size, int nrec, file *fd);
- •Int fwrite (void *buf, int size, int nrec, file *fd);
- •Int main()
- •Int main()
- •Infl.Open(“a.Txt”);
- •If (!infl) … //открытие успешно
- •Int main()
- •Inout.Seekg(0);
- •Int main()
- •Void main()
- •Void main()
- •Void main(void)
- •Ifstream prm2("a.Txt") ;
- •If (prm2.Fail())
Int fseek(file *fp, long pos, int mode);
Возвращает 0 при успешном позиционировании и -1 (EOF) - в случае неудачи.
Параметр mode определяет, относительно чего отсчитывается текущая позиция в файле и имеет следующие значения (установленные в stdio.h):
#define SEEK_SET 0 // Относительно начала файла
// начало файла - позиция 0
#define SEEK_CUR 1 // Относит. текущей позиции,
// >0 - вперед, <0 - назад
#define SEEK_END 2 // Относительно конца файла
// (знач. pos – отрицательное)
Получить текущую длину файла можно позиционированием:
long fsize;
fseek(f1, 0L, SEEK_END); //устан. на конец файла
fsize = ftell(fd); //прочитать знач. текущей позиции
Еще одна функция позиционирования в файле на начало потока: rewind (fp);
Функция эквивалентна функции fseek за исключением того, что сбрасывается индикатор конца файла и индикатора ошибок. После функции rewind м. выполнять операции обновления файлов.
Пример. Имеется файл a.txt с текстом, содержащий информацию на нескольких страницах (на каждой странице не более 20 строк, в строке 80 символов). Разработать программу чтения страниц по введенному номеру страницы (нумерация с 0, не более 5 страниц).
VS 2012 и >
#include <stdio.h>
Void main()
{ FILE *fd;
Int np, n, I; long p[5]; char str[80];
fopen_s(&fd, "a.txt", "r"); //VS 2012 и >
for (np = 0; np < 5; np++)
{ P[np] = ftell(fd); //Запом. начало стр.
for (i = 0; i < 20; i++) // Чтение 20 строк
if (fgets(str, 80, fd) == NULL)
break; //Конец файла - выход
if (i < 20) break; //Неполная стр.- выход
}
while(1)
{ printf("Input number page ");
scanf_s("%d", &n);
if ((n > np) || (n < 0)) break;
fseek(fd, P[n], SEEK_SET);
for (i = 0; i < 20; i++)
{ if (fgets(str, 80, fd)==NULL) break;
puts(str);
}
} fclose(fd);
}
Пример. Определить размер файла a.txt в байтах.
#include <stdio.h>
Void main()
{ FILE *fd;
long int pos;
fopen_s(&fd, "a.txt", "r");
fseek (fd, 0, SEEK_END); //0 байт от конца
pos = ftell (fd); //Текущая позиция в файле
if (pos < 0) puts ("\nError");
else if (!pos) puts ("\nFile is empty");
else printf ("\nSize= %ld", pos);
}
#include <stdio.h>
Int main() {
FILE *in, *out;
int n;
fopen_s(&in, "c:/temp/input.txt", "r");
fscanf_s(in, "%d", &n);
fclose(in);
printf_s("%d\n", n);
fopen_s(&out, "c:/temp/output.txt", "w");
fprintf_s(out, "%d\n", n);
fclose(out);
getchar();
return 0;
}
Пример. Открыть существующий файл как двоичный для чтения и записи
FILE *fd;
fd = fopen("B.dat", "rb+wb");
fd = fopen("B.dat", "wb+");