В рамках задания колледжа я пытаюсь создать простое приложение на C, использующее Win32 для программирования GUI и пишущий собственный динамический связанный список для хранения данных. Поскольку позже я мог бы использовать его для других целей, я пытаюсь написать общий список со «встроенными» функциями для чтения и записи данных в файл. Теперь вот моя проблема
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagA{
int t_int;
float t_float;
char t_char;
char t_vchar[30];
} A;
typedef struct tagB{
void *data;
struct tagB *prox;
} B;
int main(){
A dA = {1, 1.5, 'a', "teste123"};
B dB = {&dA, NULL};
dB.data = &dA;
B dB2 = {0};
FILE *fp;
fp = fopen("Data.txt", "w");
size_t dSize = sizeof(dA);
printf("Struct size: %d", dSize);
if(fp == NULL){
printf("nope");
}else{
fwrite(&dB.data, dSize, 1, fp);
}
fclose(fp);
fp = fopen("Data.txt", "r");
dB2.data = malloc(dSize);
fread(&dB2.data, dSize, 1, fp);
printf("\n\n%s", ((A*)dB2.data)->t_vchar);
}
Это код, который я пытаюсь проработать.
- Запись работает просто отлично, и мне просто нужно сделать это для отдельной функции, которая получает указатель на структуру данных и ее размер.
- Но чтение отключено ... После чтения и вывода на консоль t_int показывает действительно большое число, у t_float ничего нет, и поэтому символ и строка ...
Кроме того, я знаю, что это не самый лучший, эффективный и безопасный код, но это всего лишь прототип, что-то, что пришло мне в голову ...