Функция, что записывает в текстовый файл данные структуры, введенные с клавиатуры - C (СИ)
Формулировка задачи:
Помогите сделать программу. Написать функцию, что записывает в текстовый файл данные структуры, которые мы вводим с клавиатуры.
Решение задачи: «Функция, что записывает в текстовый файл данные структуры, введенные с клавиатуры»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct PersonInfo {
unsigned age;
char firstName[64];
char lastName[128];
} PersonInfo;
int SavePersonInfo(FILE *f, PersonInfo *pinfo)
{
fwrite(pinfo, sizeof(PersonInfo), 1, f);
return 0;
}
void outputPersonInfo(PersonInfo *pinfo)
{
printf("Age: %d\n", (*pinfo).age);
printf("First Name: %s\n", (*pinfo).firstName);
printf("Last Name: %s\n", (*pinfo).lastName);
}
void imputPersonInfo(PersonInfo *pinfo)
{
printf("Age: ");
scanf("%d", &(*pinfo).age);
printf("First Name: ");
scanf("%63s", (*pinfo).firstName);
printf("Last Name: ");
scanf("%127s", (*pinfo).lastName);
}
int main()
{
FILE* datafile;
datafile = fopen("data.dat", "w+b");
if (!datafile) {
printf("Error open file.");
return -1;
}
PersonInfo p_info;
imputPersonInfo(&p_info);
SavePersonInfo(datafile, &p_info);
outputPersonInfo(&p_info);
fclose(datafile);
return 0;
}
Объяснение кода листинга программы
- Создание файла с помощью функции fopen.
- Объявление структуры PersonInfo с полями:
- age (возраст) типа unsigned (без знака)
- firstName (имя) массив символов на 64 элемента
- lastName (фамилия) массив символов на 128 элементов
- Определение функции SavePersonInfo, которая записывает данные структуры PersonInfo в файл с помощью функции fwrite.
- Определение функции outputPersonInfo, которая выводит данные структуры PersonInfo на экран с помощью функции printf.
- Определение функции imputPersonInfo, которая запрашивает и сохраняет данные структуры PersonInfo с помощью функции scanf.
- Создание переменной p_info типа PersonInfo для хранения данных, введенных пользователем.
- Вызов функции imputPersonInfo для ввода данных в структуру p_info.
- Вызов функции SavePersonInfo для записи данных из структуры p_info в файл data.dat.
- Вызов функции outputPersonInfo для вывода данных из структуры p_info на экран.
- Закрытие файла с помощью функции fclose.
- Возврат 0 в функции main, что означает успешный конец работы программы.