Конспект лекций Часть II одесса, 2003


Download 0.65 Mb.
Pdf ko'rish
bet11/26
Sana17.06.2023
Hajmi0.65 Mb.
#1526920
TuriКонспект
1   ...   7   8   9   10   11   12   13   14   ...   26
Bog'liq
atki188 c konspekt 2

тип main(){/* … */} 
//с двумя параметрами 
тип main(int argc, char* argv[]){/* … */} 
При запуске программы параметрами разделяются пробелами. Имена 
параметров в программе могут быть любыми, но принято использовать argc и 
argv. Первый параметр (argc) определяет количество параметров, передавае-
мых функции, включая имя самой программы, второй параметр (argv) явля-
ется указателем на массив указателей типа char*. Каждый элемент массива 
содержит указатель на отдельный параметр командной строки, хранящийся в 
виде С-строки, оканчивающейся нуль-символом. Первый элемент массива 
(argv[0]) ссылается на полное имя запускаемого на выполнение файла, сле-
дующий (argv[1]) указывает на первый параметр, argv[2] – на второй пара-
метр, и так далее. Параметр argv[argc] должен быть равен 0. 
Если функция main() ничего не возвращает, вызвавшая система по-
лучит значение, означающее успешное завершение. Нулевое значение озна-
чает аварийное завершение. Оператор возврата из main() можно опускать. 
#include  
void main(int argc, char* argv[]){ 
for (int i = 0; i < argc; i++) cout << argv[i] << '\n'; 

Пусть исполняемый файл программы имеет имя main.exe и вызывается из 
командной строки: 
d:\cpp\main.exe one two three 
На экран будет выведено: 
D:\CPP\MAIN.EXE 
one 


Одесский колледж компьютерных технологий “СЕРВЕР” 
19
two 
three 
Работа с файлами 
Язык С кроме стандартного ввода данных с клавиатуры и вывода 
результатов на экран предоставляет также возможность обмена при операци-
ях ввода/вывода с внешними устройствами, в том числе, с файлами на диске. 
В С не предусмотрены никакие предопределённые структуры файлов 
(такие как файлы последовательного или прямого доступа): все файлы рас-
сматриваются как последовательности, потоки байтов. 
Для файлов определён маркер (указатель чтения/записи). Он опреде-
ляет текущую позицию, к которой осуществляется доступ. 
С началом работы любой программы автоматически открываются 
некоторые стандартные потоки, например, стандартный ввод (его имя - stdin) 
и стандартный вывод (его имя - stdout). По умолчанию они связаны с клавиа-
турой и экраном терминала соответственно. Поэтому в тех функциях вво-
да/вывода, которые использовались до сих пор, не указывалось, из какого 
потока берутся или куда помещаются данные: это известно по умолчанию. 
Однако возможно в своей программе открывать другие потоки, свя-
зывать их либо с файлами на диске, либо с физическими устройствами (на-
пример, принтером), записывать в них или считывать из них информацию. 
Для этого служат функции ввода/вывода верхнего уровня. 
Доступ к потоку осуществляется с помощью указателя. Указатель на 
файл описывается следующим образом: 
FILE 
*fp; 
Тип FILE – это структура, определённая в  и содержащая 
некоторую информацию о файле: например, флаги состояния файла, размер 
буфера, указатель на буфер и др. Описанный указатель можно связать с кон-
кретным файлом в момент открытия данного файла. Это осуществляется с 
помощью функции: 
fopen (“путь к файлу”,”тип доступа”), 
которая возвращает указатель на файл или NULL в случае ошибки. 
Например, в результате выполнения оператора 
fp = fopen (“ex1.txt”,”w”), 
файл ex1.txt открыт для записи, а в программе на этот файл можно сослаться 
с помощью указателя fp (то есть функция fopen() берёт внешнее представле-
ние файла – его физическое имя – и ставит ему в соответствие внутреннее 
логическое имя, которое далее и будет использоваться в программе). 
В качестве типа доступа могут быть указаны следующие параметры: 
“w” 
– 
существующий файл открывается для записи, при этом его 
старое содержимое затирается. Маркер файла указывает на его начало. Если 
файл ещё не существовал, то он создаётся (если это возможно); 


Одесский колледж компьютерных технологий “СЕРВЕР” 
20
“r” 
– 
существующий файл открывается для чтения (с начала). Если 
файл не существует – это ошибка; 
“a” 
– 
файл открывается для дозаписи в конец. Если файл ещё не су-
ществует, он будет создан; 
“w+” 
– 
открывается пустой файл для чтения и записи, при этом его 
старое содержимое затирается. Если файл ещё не существовал, то он создаёт-
ся; 
“r+” 
– 
существующий файл открывается для чтения и записи. Если 
файл не существует – это ошибка; 
“a+” 
– 
файл открывается для чтения и добавления информации в ко-
нец. 
Файл можно открыть в двоичном (b) или текстовом (t) режиме. Эти 
символы записывают во втором параметре, например, “rb” или “rt”. Двоич-
ный режим означает, что символы перевода строки и возврата каретки (0х13 
и 0х10) обрабатываются точно так же, как и остальные. В текстовом режиме 
эти символы преобразуются в одиночный символ перевода строки. По умол-
чанию файлы открываются в текстовом режиме. 
Пример: 
FILE *f = fopen (“d:\\cpp\\data”, “rb+”); 
(открывается файл d:\cpp\data для чтения и записи в двоичном режиме и свя-
зывается с указателем f). 
Указатель f используется в дальнейших операциях с потоком (фай-
лом). При открытии потока с ним связывается область памяти, называемая 
буфером. При выводе вся информация направляется в буфер и накапливается 
там до заполнения буфера или до закрытия потока. Чтение осуществляется 
блоками, равными размеру буфера, и данные читаются из буфера. Буфериза-
ция позволяет более быстро и эффективно обмениваться информацией с 
внешними устройствами. С помощью функций setbuf и setvbuf можно управ-
лять размерами и наличием буферов. 
По окончании работы с файлом он должен быть закрыт. Для этого 
используется функция

Download 0.65 Mb.

Do'stlaringiz bilan baham:
1   ...   7   8   9   10   11   12   13   14   ...   26




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling