Билет 18. Аргументы функции main

main(int ARGC,char **ARGV)

{

while (ARGC--)

printf("\n %s ",ARGV[ARGC]);

}

Допустим, программа называется

obrab_1.exe

Тогда, если ее вызвать из подкаталога TC на диске C следующим образом:

C:\TC>obrab_1 one two

то программа выдаст на экран такую информацию:

two

one

C:\TC\obrab_1.exe

В языке C заданы два встроенных аргумента функции main: argc и argv.

Выглядит это так:

int main(int argc, char *argv[]) {...}

Аргумент argc типа integer содержит в себе количество аргументов командной строки.

Аргумент argv типа char - указатель на массив строк. Каждый элемент массива указывает на аргументы командной строки. Один параметр отделяется от другого пробелами.

argv[0] - полное имя запущенной программы

argv[1] - первая строка записаная после имени программы

argv[2] - вторая строка записаная после имени программы

argv[argc-1] - последняя строка записаная после имени программы

argv[argc] – NULL

Билет 19. Файлы, их описание, открытие\закрытие текстового файла.

Пример открытия файла

File *in;

if((in=fopen("myfile.dat","r"))==NULL)

{ printf("\n Файл myfile.dat не открыт."); exit(1);}

Закрытие файла осуществляет функция

fclose(указатель_файла);

Работа со стандартным файлом:

scanf (управляющая строка, данные);

printf (управляющая строка,данные);

gets (имя_строки);

puts(строка или имя строки);

getchar();

getch();

getche();

putchar(символ или имя_символа)

Работа с произвольным файлом:

fscanf(указатель_файла,управляющая_строка, данные);

fprintf(указатель файла,управляющая строка, данные);

fgets (имя_строки,колич.симв.,указ._файла);

fputs (строка или имя_строки,указ._файла);

getc (указатель_файла) ;

putc(символ или имя_символа,указ._файла);

Билет 20. Файл, их описание, открытие\закрытие двоичного файла.

В отличие от текстовых файлов доступ к элементам бинарных файлов выполняется в произвольном порядке, а не последовательно. Поэтому бинарные файлы называют файлами произвольного доступа. Приложение, в котором предполагается использовать файлы произвольного доступа, должно их создавать. Все записи в таком файле должны быть одинаковой фиксированной длины. Данные могут быть вставлены в файл прямого доступа без разрушения других данных, изменены или удалены без перезаписи всего файла. Для получения доступа к бинарному файлу(потоку) в MVS нужно: Создать поток соответствующего типа: ifstream- для ввода из файла ; ofstream- для вывода в файл; fstream - для обмена с файлом в двух направлениях. Связать его с файлом данных и открыть (open) для работы в определенном режиме, с обязательным указанием двоичного режима ios::binary(по умолчанию потоки открываются в текстовом режиме):

Для закрытия потока используется функция close().

Двоичные файлы. Бесформатный ввод-вывод:

fread(куда, размер, сколько, указатель_файла);

– для чтения из файла,

fwrite (откуда, размер, сколько,указатель_файла);

Для записи в файл.

При этом, в fopen

режим дополняется опцией ”b”

(двоичный файл), например,

"wb+"

(по умолчанию действует ”t”

— текстовый файл).

Двоичные файлы. Бесформатный ввод-вывод:

ПРИМЕР:

#include<stdio.h>

main( )

{

FILE *in;

int i,a[10]={1,2,3,4,5,6,7,8,9,10},b[10];

in=fopen("D:\\ISTAS\\myfile.dat","wb+");

fwrite(a,2,10,in);

rewind(in);

fread (b,2,10,in); puts ("\nМассивB\n");

for (i=0;i<10;i++)

printf (" %d",b[i]);

}

Указание позиции при работе с файлом:

ftell (указатель файла);

fseek( указатель_файла, величина_сдвига, точка_отсчета);

SEEK_SET – начало файла,

SEEK_CUR – текущая позиция,

SEEK_END – конец файла.

Б) Чтение из двоичного файла

FILE *out;

...

in=fopen("VkladBin.dat","rb");

fread(&NC,sizeof(int),1,in);

clients=(struct z*)malloc(NC*sizeof(struct z));

fread(clients,sizeof(struct z),NC,in);

fclose(in);