- •Начало работы в среде разработчика FoxPro
- •Константы и переменные
- •Примеры
- •Примеры
- •Примеры
- •Комментарии
- •Процедуры и функции
- •Примеры:
- •Индексы массива
- •Примеры
- •Примеры
- •Примеры
- •2. Считывание информации из файла.
- •3. Перемещение по файлу
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Задание
- •Примеры
- •Задание
- •Графические функции
- •Шрифтовые свойства
- •Метод line
- •Метод box
- •Метод Circle
- •Функции даты и времени
- •Use [файл | ?] [in рабочаяОбласть] [again] [alias Псевдоним] [exclusive | shared] [noupdate]
- •Добавление и изменение значений полей
- •Относительное перемещение:
- •Контрольные работы
Примеры
Откроем файл:
nf=fopen("test.txt")
Переместимся на 11 символов с начала файла:
=fseek(nf,11)
Считаем шесть байт:
? fread(nf,6)
Результат: строка
Переместимся еще на 10 байт относительно текущей позиции указателя:
? fseek(nf,10,1)
Результат: 27
Мы первым оператором seek сместились на 11, после считывания 6 байт сдвинулись еще на 6 и, наконец, после последнего сдвига на 10 оказались на 27 байте.
Считаем дальше 5 байт:
? fread(nf,5)
Результат: файл
Теперь сдвинемся на 0 позицию с конца файла:
? fseek(nf,0,2)
Результат: 262
Таким образом мы определили длину нашего файла - в нем всего 262 байта, естественно учитывая специальные символы конца строки и перевода строки.
Закроем файл:
=fclose(nf)
4. Запись в файл.
Функция res = fwrite(nf,s,n1) предназначена для записи n1 символов из строки s в файл со ссылочным номером nf.
Примеры
Откроем файл test.txt в режиме чтение-запись:
nf = fopen('test.txt',2)
Переместим указатель на 10 позицию:
pos=fseek(nf,10)
Результат: 10
Запишем начиная с 10 позиции строку "=====":
k=fwrite(nf,"====",4)
Результат: 4
Снова сместимся на 10 позицию по отношению к началу файла:
pos=fseek(nf,10)
Результат: 10
Считаем из файла 10 символов:
s=fread(nf,10)
Результат: ====ока те
В результате выполнения записи четыре символа с 10 позиции заменились на знак "=".
Закройте файл.
5. Работа со строками файла.
Для работы с файлами в текстовом режиме предназначены функции работы со строками fgets() и fputs().
Функция чтения строки fgets() возвращает последовательность байтов из файла или порта связи, открытого с помощью файловой функции низкого уровня. fgets(nf, n1). Параметр nf - задает номер канала файла, из которого функция fgets() будет возвращать данные. Параметр n1 - задает количество байт, возвращаемых функцией FGETS().
Функция fgets()возвращает данные, начиная от исходной позиции указателя файла и кончая символом возврата каретки, если он попадает в число n1 байтов.
Если аргумент n1 опущен, fgets() по умолчанию возвращает всю строку или (если строка очень длинная) 254 байта. Символы возврата каретки (CR) и перевода строки (LF) не возвращаются в составе строки.
Примеры
Открываем файл:
nf=fopen('test.txt')
Считываем первую строку:
s1=fgets(nf)
? s1
Результат: Это первая строка тестового файла
Считываем вторую строку:
? fgets(nf)
Результат: Это вторая строка
Считываем первые 5 символов 3-ей строки:
? fgets(nf,5)
Результат: Далее
Считываем остаток третьей строки:
? fgets(nf)
Результат: все символы клавиатуры
При попытке считать больше символов чем в текущей строке, возвращается строка:
? fgets(nf,100)
Результат: 1234567890
Закрываем файл:
=fclose(nf)
Функция записи строки в файл fputs(nf, s1 , n1) записывает символьную строку с возвратом каретки и переводом строки в файл или порт связи, открытый с помощью файловой функции низкого уровня.
Параметр nf - задает дескриптор файла, соответствующий файлу или порту связи, куда функция fputs() собирается писать данные. Параметр s1 - задает символьное выражение, которое функция fputs() пишет в файл или порт. Число n1 - задает количество символов в выражении s1, которые нужно записать в файл или в порт.
Если аргумент n1 опущен, функция fputs() запишет в файл или в порт все символьное выражение s1 целиком. Если значение n1 меньше количества символов в выражении s1, в файл или порт записывается только n1 символов. Если значение n1 равно числу символов в выражении s1 или больше его, в файл или порт записывается все выражение. Функция fputs() возвращает число байтов, записанных в файл или порт. Если fputs() не в состоянии выполнить запись в файл или порт по той или иной причине, возвращается 0.