اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

نعم يمكننا فعل ذلك، أي يمكننا ترتيب الأرقام الموجودة بداخل الملف الثنائي، وللإشارة فالملف الثنائي هو ما يصطلح عليه بالانجليزية Binary file، حيث لن نستخدم مصفوفة كما يفعل البعض، بل سنتصفح الملف الثنائي وبالمقارنة مع آخر قيمة مقارنة فيه سيتم ترتيب قيمه-، ليتم إنشاء ملف مؤقت IndexTem  لنقل القيم المرتبة بداخله، كما يوضح الكود التالي:

void Sort()
{
	int StructureSize, Idx1, Idx2;

	FILE * binaryFile;
	binaryFile = fopen("Index.txt","rb+");
	index_type Index, IndexTemp;
	StructureSize = sizeof(Index);
	fseek(binaryFile, 0, SEEK_END);
	int fileSize = ftell(binaryFile);
	rewind(binaryFile);


	for (Idx1 = 0; Idx1 < fileSize; Idx1 += StructureSize)
	{
		for (Idx2 = 0; Idx2 < fileSize - StructureSize; Idx2 += StructureSize)
		{
			fread(&Index, StructureSize, 1, binaryFile);
			fread(&IndexTemp, StructureSize, 1, binaryFile);

			if (Index.id > IndexTemp.id)
			{
				fseek(binaryFile, -(StructureSize * 2), SEEK_CUR);
				fwrite(&IndexTemp, StructureSize, 1, binaryFile);
				fwrite(&Index, StructureSize, 1, binaryFile);
				fseek(binaryFile, -StructureSize, SEEK_CUR);
			}
			else
			{
				fseek(binaryFile, -StructureSize, SEEK_CUR);
			}
		}

		rewind(binaryFile);
	}

	fclose(binaryFile);
}

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...