Привет! Я расскажу тебе о своем личном опыте написания программы на C ‚ которая записывает с клавиатуры в файл структуру с использованием разделителя полей в виде символа табуляции. Эта программа также реализует возможности дополнения существующего массива структур новыми структурами‚ сохранения их в файл‚ чтения ранее сохраненных структур из файла‚ поиска структуры с заданным значением выбранного элемента и вывода на экран содержимого массива структур. Для примера‚ я использую структуру ″Покупатель″‚ с полями⁚ фамилия‚ имя‚ отчество‚ город‚ улица‚ номер дома‚ номер квартиры‚ номер кредитной карточки и код покупки.Для начала‚ я создал структуру ″Покупатель″ в C . Она содержит все необходимые поля‚ чтобы хранить информацию о покупателе⁚
cpp
struct Customer {
string surname;
string name;
string patronymic;
string city;
string street;
string houseNumber;
string apartmentNumber;
string creditCardNumber;
int purchaseCode;
};
Далее‚ я создал функцию для записи структуры в файл; Она принимает массив структур и количество элементов в нем‚ и дополняет существующий файл новыми структурами⁚
cpp
void appendToFile(Customer* customers‚ int numCustomers) {
ofstream file(″customers.txt″‚ ios⁚⁚app);
for (int i 0; i < numCustomers; i ) { file << customers[i].surname << '\t' << customers[i].name << '\t' << customers[i].patronymic << '\t' << customers[i].city << '\t' << customers[i].street << '\t' << customers[i].houseNumber << '\t' << customers[i].apartmentNumber << '\t' << customers[i].creditCardNumber << '\t' << customers[i].purchaseCode << '\n'; } file.close; } Теперь‚ создам функцию для чтения структур из файла. Она просто читает каждую строку файла‚ разделяет ее на поля с помощью символа табуляции и сохраняет в массив структур⁚ cpp void readFromFile(Customer* customers‚ intn numCustomers) { ifstream file(″customers.txt″); if (file.is_open) { string line; while (getline(file‚ line)) { stringstream ss(line); getline(ss‚ customers[numCustomers].surname‚ '\t'); getline(ss‚ customers[numCustomers].name‚ '\t'); getline(ss‚ customers[numCustomers].patronymic‚ '\t'); getline(ss‚ customers[numCustomers];city‚ '\t'); getline(ss‚ customers[numCustomers].street‚ '\t'); getline(ss‚ customers[numCustomers].houseNumber‚ '\t'); getline(ss‚ customers[numCustomers].apartmentNumber‚ '\t'); getline(ss‚ customers[numCustomers].creditCardNumber‚ '\t'); ss >> customers[numCustomers].purchaseCode;
numCustomers ;
}
file.close;
}
}
Теперь я могу создать функцию для поиска структуры с заданным значением выбранного элемента. Она принимает массив структур‚ количество элементов в нем и значение для поиска‚ а затем выводит все структуры‚ в которых найдено значение⁚
cpp
void searchStructures(Customer* customers‚ int numCustomers‚ string searchValue) {
for (int i 0; i < numCustomers; i ) {
if (customers[i].surname searchValue ||
customers[i].name searchValue ||
customers[i].patronymic searchValue ||
customers[i].city searchValue ||
customers[i].street searchValue ||
customers[i].houseNumber searchValue ||
customers[i].apartmentNumber searchValue ||
customers[i].creditCardNumber searchValue ||
to_string(customers[i].purchaseCode) searchValue) {
cout << ″Фамилия⁚ ″ << customers[i].surname << '\n'
<< ″Имя⁚ ″ << customers[i].name << '\n'
<< ″Отчество⁚ ″ << customers[i].patronymic << '\n'
<< ″Город⁚ ″ << customers[i].city << '\n'
<< ″Улица⁚ ″ << customers[i].street << '\n'
<< ″Номер дома⁚ ″ << customers[i].houseNumber << '\n'
<< ″Номер квартиры⁚ ″ << customers[i].apartmentNumber << '\n'
<< ″Номер кредитной карточки⁚ ″ << customers[i].creditCardNumber << '\n'
<< ″Код покупки⁚ ″ << customers[i].purchaseCode << '\n'
<< '\n';
}
}
}
И‚ конечно же‚ я не забыл создать функцию для вывода на экран содержимого массива структур. Она просто проходит по всем элементам массива и выводит информацию о каждой структуре⁚
cpp
void printArray(Customer* customers‚ int numCustomers) {
for (int i 0; i < numCustomers; i ) {
cout << ″Фамилия⁚ ″ << customers[i].surname << '\n'
<< ″Имя⁚ ″ << customers[i].name << '\n'
<< ″Отчество⁚ ″ << customers[i].patronymic << '\n'
<< ″Город⁚ ″ << customers[i].city << '\n'
<< ″Улица⁚ ″ << customers[i].street << '\n'
<< ″Номер дома⁚ ″ << customers[i].houseNumber << '\n'
<< ″Номер квартиры⁚ ″ << customers[i].apartmentNumber << '\n'
<< ″Номер кредитной карточки⁚ ″ << customers[i].creditCardNumber << '\n'
<< ″Код покупки⁚ ″ << customers[i].purchaseCode << '\n'
<< '\n';
}
}