МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Потоковый ввод – вывод. Открытие и закрытие потока.





Потоки – это наиболее удобные средства для чтения или записи данных в файл в С. Они позволяют разрабатывать гибкий и эффективный ввод/вывод, который не зависит от используемых файлов или встроенного оборудования.

Поток является файлом или физическим устройством (принтером или монитором, например), которым вы управляете с помощью указателей на объект FILE (определенный в stdio.h). Объект FILE содержит различную информацию о потоке, включая текущую позицию потока, указатели на соответствующие буферы и индикаторы ошибки или конца файла.

Ваша программа никогда не может создавать и копировать непосредственно объекты FILE; однако, она может использовать указатели, возвращенные из функций типа fopen.

Вы должны открыть поток перед тем, как вы будете производить ввод/вывод в него. Открытый поток связывается с файлом или устройством. Функции, которые открывают потоки, это fopen, fdopen и freopen. Когда вы открываете поток, вы указываете, хотите ли вы читать или записывать в поток, или делать и то, и другое. Вы должны также указать, будете ли вы обращаться с данными из потока как с текстом или как с двоичными данными. Это последнее указание важно для уменьшения несовместимости между потоками ввода/вывода С и текстовым файлом DOS.

Текстовые и двоичные потоки.

Текстовые потоки используются для обычных текстовых файлов DOS, таких как файл, созданный редактором С. Поток ввода/вывода С предполагает, что текстовый файл разделен на строки, отделенные с помощью одного символа новой строки (которым является ASCI-символ перевода строки). Текстовый файл DOS, однако, записывается на диск с двумя символами между каждой строкой – ASCII-символами «возврат каретки» и «перевод строки». В текстовом режиме С преобразует пару возврат каретки/перевод строки (CR/LF) в один символ перевод строки при вводе; перевод строки преобразуется в пару CR/LF при выводе.

Двоичный поток значительно проще, чем текстовый. Никаких преобразований не производится. Любые символы читаются и записываются без изменений.

При открытии потока в программу возвращается указатель на поток, который идентифицирует его во всех последующих операциях.

#include <stdio.h>

FILE *fp;

Функция открытия потока выглядит следующим образом:

fp=fopen(*имя_файла, *режим_открытия);

Для контроля открытия потока следует воспользоваться нижеприведенной конструкцией:

if ((fp = fopen(*имя_файла, *режим)) = = NULL){

fprintf(stderr, "Cannot open input file.\n");

exit(1) ; }

Стандартно файл, связанный с потоком, можно открыть в следующих режимах: «w», «r», «a», «w+», «r+», «a+», «b», «t».

Указатель на поток в любом режиме, отличном от аварийного, никогда не бывает равным NULL.

После того как файл открыт, с ним можно работать, записывая в него информацию или считывая ее (в зависимости от режима).

Открытые на диске файлы после окончания работы с ними рекомендуется закрыть явно. Для этого используется библиотечная функция int fclose(FILE *fp);

 

Правила видимости переменных.

Область видимости объекта (переменной или функции) определяет набор функций или модулей, внутри которых допустимо использование имени этого объекта. Область видимости объекта начинается в точке объявления объекта.

Локальные и глобальные переменные

Время жизни объекта может быть глобальным и локальным.



Глобальными называют объекты, объявление которых дано вне функции. Они доступны (видимы) во всем файле, в котором они объявлены. В течение всего времени выполнения программы с глобальным объектом ассоциирована некоторая ячейка памяти.

Локальными называют объекты, объявление которых дано внутри блока или функции. Эти объекты доступны только внутри того блока, в котором они объявлены. Объектам с локальным временем жизни выделяется новая ячейка памяти каждый раз при осуществлении описания внутри блока. Когда выполнение блока завершается, память, выделенная под локальный объект, освобождается, и объект теряет своё значение.

Пример

#include <stdio.h>
void autofunc(void) {

int k=1; // локальный объект

printf(" \n k = %d ", k);

k=k+1;
}
int main() {

for(int i = 0; i<=5; i++) // область видимости i - цикл

autofunc();

getchar();

return 0;
}

Область видимости локальной переменной k - функция autofunc(). Каждый раз при входе в функцию с идентификатором k ассоциируется некоторая ячейка памяти, в которую помещается значение равное 1.

С помощью глобальных переменных можно организовать обмен информацией между функциями. При этом вызываемая функция не будет принимать значения глобальных переменных в качестве формальных аргументов. Однако в этом случае существует опасность случайного изменения глобальных объектов другими функциями. Модификация или видоизменение объектов в языке Си применяется для того, чтобы изменить диапазон значений или область действия объекта. Ключевые слова, которые применяются для модификации, называются модификаторами.

Модификатор unsigned предназначен для того, чтобы объявлять беззнаковуюцелочисленную переменную, тем самым изменив диапазон представления этой переменной.

Модификатор extern предназначен для использования в данном программном модуле объекта, который объявлен в другом программном модуле.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.