Конспект лекций Часть II одесса, 2003
Download 0.65 Mb. Pdf ko'rish
|
atki188 c konspekt 2
- Bu sahifa navigatsiya:
- Работа с файлами
тип 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling