У меня есть эта структура
struct _recipe
{
char name[50];
char** ingredients;
char diff[12];
int time;
int calories;
char** procedure;
} recipe;
И я хочу скопировать все данные в двоичном файле.
Прежде всего, я выделил динамически память как для ингредиентов, так и для процедуры, и я написал все, что мне нужно. Но тогда мне нужно записать все в двоичный файл. Я знаю, что они оба указатели, так что это означает, что если я использую
fwrite(&recipe,sizeof(recipe),1,fbr);
Я напишу в файле адрес, а не фактическое значение, которое мне нужно. Я попытался написать каждое поле структуры внутри файла таким образом
fwrite(recipe.name,sizeof(recipe.name),1,fbr);
fgets(recipe.ingredients[j],30,stdin);
strcpy(buff,recipe.ingredients[j]);
len = strlen(buff);
fwrite(buff,sizeof(recipe.ingredients[0]),len,fbr);
fwrite(recipe.diff,sizeof(recipe.diff),1,fbr);
fwrite(&recipe.time,sizeof(recipe.time),1,fbr);
fwrite(&recipe.calories,sizeof(recipe.calories),1,fbr);
fgets(recipe.procedure[i],1000,stdin);
strcpy(buff,recipe.procedure[i]);
len = strlen(buff);
fwrite(buff,sizeof(recipe.procedure[0]),len,fbr);
Я не уверен, что это правильный путь, но я попытался поместить строку внутрь другой и затем скопировать ее в файл. Проблема в том, что я не уверен, что это сработало, потому что я не знаю, какую команду я должен поставить для чтения всех значений, которые я сохранил. С названием, конечно, это работало, у меня не было проблем с этим, но потом, когда я собирался прочитать ингредиенты, я заблокировал себя, потому что я записал значение внутри другой строки, и я не знаю, какую длину я должен вставить в чтение. Может быть, я что-то упускаю, возможно, я вначале бездельничаю, когда пишу, но я не знаю, что делать в этот момент.