Сохранение структуры. Можно ли структуру записать целиком в файл? - C (СИ)

Формулировка задачи:

давно интересует такой вопрос: можно ли сразу записать структуру целиком в файл? т.е. fwrite(struct, sizeof(struct), 1, fp)? или если нет еще вопрос можно ли как то обратиться к членам структуры не по именам? ну как то я не знаю по id какому нибудь или что то в этом роде... просто для многих программ часто требуется сохранение структур в бинарник... фактически алгоритм один и тот же везде, вот я и подумал может можно написать какие то общие функции например с использованием шаблонов... только не знаю как обратиться к членам структуры не по имени...

Код к задаче: «Сохранение структуры. Можно ли структуру записать целиком в файл? - C (СИ)»

textual
typedef struct{
  char ch;
  int i;
  double r;
} myStruct;
 
int main(int argc, char *argv[])
{
  setlocale(LC_ALL, "RU");
  myStruct st1;
  printf("Введите символ\n");
  fflush(stdin);
  scanf("%c", &st1.ch);
  printf("Введите целое число\n");
  scanf("%d", &st1.i);
  printf("Введите вещественное число\n");
  scanf("%lf", &st1.r);
  FILE *outfile = NULL;
  if((outfile = fopen("myfile.bin", "wb")) == NULL) return 0;
  fwrite(&st1, sizeof(st1), 1, outfile);
  fclose(outfile);
 
  myStruct *st2 = (myStruct *)malloc(sizeof(myStruct));
  FILE *infile = NULL;
  if((infile = fopen("myfile.bin", "rb")) == NULL) return 0;
  fread(st2, sizeof(st1), 1, infile);
  fclose(infile);
  printf("Введённые данные: %c, %d, %lf\n", *((char *)st2), st2->i, st2->r);
  free(st2);
  return 0;
}

15   голосов, оценка 3.800 из 5


СОХРАНИТЬ ССЫЛКУ