الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]virus code of clone virus

بدأه ريحانة الاقصى في 29 يونيو 2012 · 1 رد · 519 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

هل يوجد احد يساعدني فيي تتبع هذا الكود

انا لا اعلم الا القليل ب السي ,,

عرفت وظائف جميع الاوامر المستخدمة

ولكن الذي لا اعلمه بالكود كيف اتتبع قيم x وتسلسلها

وداخل ال while ماذا تكون قيمة done في البداية حتى يدخلها

post-218481-013115400 1341002335_thumb.p

المرفقات
6-29-2012 11-33-47 PM.png
#2

السلام عليكم

مرحبا أختي :)

مستقبلا, عليك بكتابة الكود ووضعه في الوسم الخاص به.

بالنسبة لسؤالك, الدالة findfirst تبحث عن الملفات الموجودة داخل مجلد معين و تأخذ ثلاث وسائط, الأول هو الصيغة العامة للملف (اسمه و امتداده), الوسيط الثاني عبارة عن مؤشر لبنية من النوع ffblk, هذه البنية تحتوي على خصائص البحث مثل التاريخ, الحجم, الإسم, الطبيعة (مجلد أم ملف ؟), تاريخ آخر تعديل وهكذا .. الوسيط الثالث لم أعد أتذكر فائدته :D

و هذه لائحة بعناصر البنية ffblk :

struct ffblk
{
    char ff_reserved[21]; // reserve par DOS
    char ff_attrib; // attribut a trouver
    int ff_ftime; // temps fichier
    int ff_fdate; // heure fichier
    long ff_fsize; // taille fichier
    char ff_name[13]; // nom fichier
};

إذا عثرتْ الدالة findfirst على ملف في المجلد الذي تبحث فيه, ستكون قيمة المتغير done تساوي صفر و عند انتهاء البحث ستعيد الدالة findnext القيمة -1.

الكود التالي يعرض لك المسار الذي يتواجد فيه البرنامج بالإضافة إلى أسماء و أحجام جميع الملفات التي يبدأ اسمها بالحرف C :

#include <dir.h>
#include <stdio.h>
#include <string.h>
char *current_directory(char *path)
{
	 strcpy (path, "X:\\");
	 path[0] = 'A' + getdisk();
	 getcurdir (0, path+3);
	 return (path);
}
int main()
{
	 struct ffblk ffblk;
	 char curdir[MAXPATH];
	 int done;
	 current_directory(curdir);
	 printf("Repertoire : [ %s ]\n", curdir);
	 printf("Affichage des fichiers : \n");
	 done = findfirst("c*.*",&ffblk,0);
	 while(done != -1)
	 {
			printf("\t%s\t%u (octets)\n", ffblk.ff_name,ffblk.ff_fsize);
			done = findnext(&ffblk);
	 }
	 return 0;
}

مُخرجات الكود :

post-219439-075840500 1341076959_thumb.p

أرجو لك التوفيق.

المرفقات
test.png

تم تعديل هذه المشاركة بواسطة أحمد الشنقيطي في 30 يونيو 2012 في 20:42 — السبب: إضافة بسيطة إلى الكود :)

1 −1

مواضيع مشابهة