Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.doc
Скачиваний:
11
Добавлен:
13.11.2019
Размер:
1.2 Mб
Скачать

Void rnain()

{

int i=0; double a[10];

while(i<10) printf("%lf\n" ,a[i++]=RN());

}

Легко видеть, что функция RN, которой не нужны аргу­менты, с использованием заготовленной глобальной кон­станты g реализует генерацию случайной величины в нужном диапазоне. Обратим внимание на то, что в главной программе производится печать очередного элемен­та массива, который прямо в функции печати и получает значение.

Следующая функция заполняет n первых элементов массива случайными целыми в диапазоне от 0 до 9:

void initarray(int *name, int n)

{

do *(name+- -n)=random(10); while(n);

}

Эта функция может быть использована, например, в сле­дующей главной функции:

void main()

{

int mass[100],k;

printf("ЗАПОЛНИТЬ K="); scanf(“%d",&k);

initarray(mass,k);

printf("ЭЛЕМЕНТОВ МАССИВА\п");

while(k) printf(“%d\n",mass[- -k] ) ;

}

Файлы

До сих пор возможности общения наших программ с окружающим миром были весьма ограничены. Мы могли только вводить данные в программу с консоли и выво­дить их на экран. Теперь наша задача состоит в том, что­бы научиться записывать результаты работы програм­мы на диск и считывать данные с диска в программу.

Как известно, любые данные хранятся на магнит­ных носителях информации (магнитных дисках) в виде файлов. Представляя файл как "папку" с информацией, что дословно и соответствует английскому слову file, мы должны освоить процедуры открытия и закрытия этих "папок" и процедуры чтения и записи файлов.

Сразу начнем со следующей программы:

Void main()

{ int i;

FILE *f;

f=fopen("one.dat","w");

for(i=l; i<15; i++) fprintf(f,"%d\n",i);

fclose(f); }

Здесь мы впервые столкнулись с еще одним типом данных. Название этого типа FILE (пишется именно заглавны­ми буквами, что для СИ нехарактерно). Переменная f имеет отношение к этому новому типу. Поскольку она фигурирует в описании со стоящей перед ней звездоч­кой, многоопытный читатель сделает вывод о том, что f является указателем. Так оно и есть, и указывает этот указатель на файл. Иными словами, f является адресом начала файла. Пока, однако, этот указатель не инициа­лизирован, не привязан ни к какому конкретному файлу. Инициализация указателя на файл (мы будем использо­вать также термин "файловая переменная") производит­ся одновременно с открытием файла, предоставлени­ем файла в распоряжение данной программе. Открытие файла производится функцией fopen и выглядит как вы­ражение присваивания:

ИмяФайловойПеременной=fореn("Строка1", "Строка2");

Эта процедура действительно является присваиванием, поскольку функция fopen, возвращающая адрес файла, который она открывает, имеет тип FILE*. Функция име­ет два аргумента. Строка1 задает имя открываемого файла. В DOS полное имя файла состоит, как правило, из собственно имени и расширения, разделенных точкой. В нашем примере открывается файл one.dat. Строка2 состоит из буквы, показывающей для каких операций от­крывается файл. Возможны следующие варианты:

"r" — файл открывается для чтения из него инфор­мации (read),

"w" — файл открывается для записи информации (write),

"a" — файл открывается для дозаписи информации в конец файла (append).

Буква w предполагает создание нового файла с ука­занным в Строке1 именем. Будьте внимательны: если на диске в рабочем каталоге уже существовал файл с таким именем, то его от­крытие для записи приведет к безвозвратной (и, вероят­но, безвременной) утрате старого файла.

Данная программа создает новый файл и записыва­ет в него 14 целых чисел от 1 до 14. Каждое число записывается в новую строку. Функция записи в файл fprintf весьма похожа на знакомую вам функцию печа­ти на экран printf. Разница состоит в том, что сразу за открывающей скобкой пишется файловая переменная, а далее после запятой все полностью совпадает с пра­вилами оформления печати на экран. Информация, за­писанная в файл, выглядит точно так, как и на экране. В этом можно убедиться, просмотрев созданный файл с помощью любого текстового редактора, в частности, и из системы TURBO С. Поработав с папкой, вы, навер­ное, ее закрываете. Это же следует сделать и с файлом. Функция закрытия файла fclose имеет в качестве аргу­мента имя файловой переменной. Можно отметить, что в случае успешного, как говорят военные - штатного, за­вершения программы все открытые файлы закрываются автоматически. Тем не менее, мы настоятельно рекомен­дуем вызывать функцию fclose сразу после того, как программа завершила работу с соответствующим фай­лом.

Теперь напишем программу, которая читает дан­ные из файла. Считаем, что на диске существует файл one.dat, созданный предыдущей программой: