нас попросили отсортировать по алфавиту содержимое (в данном случае, R.name) текстового файла и записать его в двоичный файл без сохранения в массиве.До сих пор я просто записывал все содержимое текстового файла в двоичный файл, но я не знаю, как правильно отсортировать его в двоичном файле.Нам сказали, что мы МОЖЕМ использовать сортировку вставками, но я понятия не имею, как сортировать двоичные файлы, не зная количества структур внутри.
textFile [] и binFile [] - именатекстовый файл и двоичный файл соответственно
void textToBinary(char textFile[], char binFile[])
{
FILE * fp;
FILE * fp2;
char ch;
String20 dump;
int i;
structRecipe R;
long int npos;
if( (fp = fopen (textFile, "r")) != NULL)
{
if((fp2 = fopen (binFile, "wb"))!= NULL)
{
while( fgets(R.name, 21, fp) != NULL)
{
R.name[strlen(R.name) -1] = '\0';
fscanf(fp, "%d%c%s%c", &R.nServings, &ch, R.classifications, &ch);
fscanf(fp, "%s%c%d%c", dump, &ch, &R.nIng, &ch);
for(i=0; i<R.nIng; i++)
{
fscanf(fp, "%f%c%s%c", &R.Ingredients[i].quantity, &ch,
R.Ingredients[i].unit, &ch);
fgets(R.Ingredients[i].item, 21, fp);
R.Ingredients[i].item[strlen(R.Ingredients[i].item) - 1] = '\0';
}
fscanf(fp, "%s%c%d%c", dump, &ch, &R.nSteps, &ch);
for(i=0; i< R.nSteps; i++)
{
fgets(R.steps[i], 71, fp);
}
fscanf(fp, "%c", &ch);
fseek(fp2, 0, SEEK_END);
fwrite(&R, sizeof(structRecipe), 1, fp2);
}
fclose(fp2);
}
fclose(fp);
}
else printf("Error opening file for reading \n");
}
`
Могу ли я иметь даже просто идеи о том, как отсортировать его без сохранения содержимого двоичного файла в массив?(используя язык c)