
- •Структуры. Файлы
- •Пример организации интерфейса в виде меню
- •Пример получения битового представления вещественного числа
- •Пример заполнения полей массива структур
- •Более сложный пример использования массива структур
- •Пример использования многофайловой компиляции
- •1. Описать структуру с именем student, содержащую следующие поля:
- •2. Написать программу, выполняющую следующие действия:
- •Вывод символов в текстовый файл
- •Ввод символов из текстового файла
- •Вывод строк в текстовый файл
- •Ввод из текстового файла строк
- •Чтение и вывод на экран буфера текстового файла
- •Пример использования функций, текстовых файлов и многофайловой компиляции
- •1. Описать структуру с именем student, содержащую следующие поля:
- •2. Написать программу, выполняющую следующие действия:
- •Ввод-вывод в двоичный файл
- •Пример использования функций, бинарных файлов и многофайловой компиляции
- •1. Описать структуру с именем student, содержащую следующие поля:
- •2. Написать программу, выполняющую следующие действия:
- •Аргументы командной строки
- •Задание параметров программы в командной строке
- •Возможные ошибки при записи в файл или чтении из него
- •Определение размера файла
- •Удаление файла
- •Переименование файла
Аргументы командной строки
using namespace std;
int main(int argc, char* argv[] )
{
cout << "\nargc = " << argc << endl; //количество аргументов
for(int j=0; j<argc; j++) //вывод аргументов
cout << "Argument " << j << " = " << argv[j] << endl;
return 0;
}
////////////////////////////////////////////////////////////////
Задание параметров программы в командной строке
Задание аргумента при выполнении программы в среде MS Visual C++ 2005 осуществляется следующим образом:
в окне Solution Explorer выделить проект (щелкнуть на названии проекта)
в меню Project выбрать команду Properties
в открывшемся окне Property Pages выбрать команду Debugging
в появившейся таблице в поле Command Arguments ввести строку аргументов для программы.
//в программе в качестве аргумента функции main() задается путь // к текстовому файлу
//в командной строке задано proba.txt ( для файла из текущей папки)
#include <iostream>
#include <conio.h>
using namespace std;
int main(int argc,char *argv[])
{
if (!(argc>=2))
{
cout<<"arguments? \n";
_getch();
return 1;
}
ifstream fp(argv[1]);
cout<<"+++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<argv[1]<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++\n";
if (!fp)
{
cout<<"error of open file";
_getch();
return 1;
}
......
}
////////////////////////////////////////////////////////////////
Возможные ошибки при записи в файл или чтении из него
#include <fstream>
#include <iostream>
using namespace std;
#include <process.h> //for exit()
const int MAX = 1000;
int buff[MAX];
int main()
{
for(int j=0; j<MAX; j++) //заполнение буфера данных
buff[j] = j;
ofstream os; //создание потока вывода
//открытие потока вывода
os.open("edata.dat", ios::trunc | ios::binary);
if(!os)
{ cerr << "Could not open output file\n";
_getch();
exit(1);
}
cout << "Writing...\n"; //запись буфера в файл
os.write( reinterpret_cast<char*>(buff), MAX*sizeof(int) );
if(!os)
{ cerr << "Could not write to file\n";
_getch();
exit(1);
}
os.close(); //закрытие потока
for(int j=0; j<MAX; j++) //очистка буфера
buff[j] = 0;
ifstream is; //создание потока ввода
is.open("edata.dat", ios::binary); //открытие потока ввода
if(!is)
{ cerr << "Could not open input file\n";
_getch();
exit(1);
}
cout << "Reading...\n"; //чтение из файла в буфер
is.read( reinterpret_cast<char*>(buff), MAX*sizeof(int) );
if(!is)
{ cerr << "Could not read from file\n";
_getch();
exit(1);
}
for(int j=0; j<MAX; j++) //check data
if( buff[j] != j )
{ cerr << "\nData is incorrect\n";
_getch();
exit(1);
}
cout << "Data is correct\n";
_getch();
return 0;
}
////////////////////////////////////////////////////////////////