- •Выполнить для структурной переменой перегрузку операторов ввода/ вывода в стандартный поток внешними функциями. (л.20) стр.14
- •Как проверить состояние стандартного потока ввода? (л.20) стр. 15-16
- •Как избежать переполнения строки-приемника при вводе символьных строк? (л.20) стр. 15-16
- •Определить собственный манипулятор для форматирования вывода переменных вещественного типа, включающий не менее 5 операций форматирования? (л.20)стр. 29
- •Как сделать текстовый файл на примере последовательности случайных чисел (в редакторе и в программе)? (л.20, пример 2) стр. 32-34, 51
- •Как сделать бинарный файл на примере последовательности случайных чисел (в редакторе и в программе)? (л.20, пример 9) стр. 35-36, 52
- •Как записать в бинарный файл и прочитать из него массив, 3 структурные переменные, массив из 3 структур? (л.20, пример 10) стр. 53
- •Почему при неправильной организации чтения из файла последняя запись может повторяться 2 раза? (л.20)
- •Как обеспечить возможность повторного чтения только что прочитанного файла? (л.20)
- •Привести пример использования функций peek(), ignore(), putback().(л.20) ignore – 12,47 peek – 46,47 putback - 47
- •Как передать имя файла в качестве параметра функции main()? (л.20, примеры 5, 12)
- •Как сохранить при обработке файла невидимые символы и отредактировать их? (л.20, пример 6)
- •Как передать файл в функцию? (л.20, пример 7) примеры стр.2-3
- •Как сделать массив файлов и записать туда что-то? (л.20, пример 8) примеры стр.17
- •Как определить количество записей в бинарном файле и выполнить их корректировку? (л.20, пример 14)
Как передать имя файла в качестве параметра функции main()? (л.20, примеры 5, 12)
#include <stdio.h>
#include "fail_1.cpp"
void func (char*, char*) {};
int main(){
func ("ima_faila", "ima_strukt");
return 0;
}
fun(FILE *f, MYSTRUCT *p)
{
....
}
main()
{ MYSTRUCT s; FILE *F;
...
F = fopen(name, "r");
...
fun(F, &s);
}
Как сохранить при обработке файла невидимые символы и отредактировать их? (л.20, пример 6)
Как передать файл в функцию? (л.20, пример 7) примеры стр.2-3
int write_to_text_file (ofstream& );
int read_text_file(ifstream&);
const int len = 81;
int main()
{char *filename = "qqqqq.txt";
ofstream fout (filename, ios::out ); //ofstream fout;
//fout.open(filename, ios::out );
if (!fout) {
cout << "Error" << endl; _getch();
return 1;
}
write_to_text_file (fout);
fout.close();
ifstream fin (filename, ios::in );
if (!fin) {
cout << "Error" << endl; _getch();
return 1;
}
read_text_file(fin);
_getch(); return 0; }
(Вывод в файл)
int write_to_text_file (ofstream & fout)
{ char line[len];
cout <<"line or Ctrl+z? :"<< endl;
while (cin.getline (line, len)) {
fout << line ;
fout.put ('\n'); }
return 0;
}
(Чтение из файла)
int read_text_file (ifstream & fin)
{ char line[len];
while (!fin.eof()) {
fin >> line;
if (fin.eof()) break;
cout << line << endl;
}
return 0;
}
Как сделать массив файлов и записать туда что-то? (л.20, пример 8) примеры стр.17
(Функция заполнения массива структур из файла)
int fill_record(ifstream &fin, Man* dbase)
{ // dbase – массив структур для хранения всей базы
int i =0;
char buf[l_buf]; //строка для считывания из файла
while(fin.getline(buf,l_buf)&& i<l_dbase ) {
strncpy (dbase[i].name, buf, l_name); //заполнение элемента dbase
dbase[i].name[l_name] = '\0';
dbase[i].birth_year = atoi(&buf [l_name]);
dbase[i].pay = atof(&buf [l_name+l_year]);
i++;
}
if (i>=l_dbase) return -1;
return i-1; //количество считанных из файла записей
}
Как определить количество записей в бинарном файле и выполнить их корректировку? (л.20, пример 14)
При каждом запуске программы мы открываем файл для определения количества записанных в него записей, и в последующую будем записывать структуру с новыми полученными параметрами...
/---получение количества записей в файле---------------------------
FILE* f = fopen("file.bin", "rb");
for (int i=1; i<=10000; i++)
{
fread((char*)&X, sizeof(X[0]), i, f);
if (X.W == 0)
{
quantity = i;
break;
}
}
fclose(f);