zirek99i

تحدي : تغيير إسم الملف التنفيذي عند تشغيله

12 ردود في هذا الموضوع

المطلوب: كتابة برنامج بلغة سي، يقوم بتغيير إسمه

الشرط   : لايسمح بآستخدام أي دالة، من دوال الـ API، فقط pure c

 

Enjoy

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جميل :)

بما أن صاحبنا gcc فيه كل الـpure c صايرة Built in  ..

إليك أقصر كود يمكنه تنفيذ العملية :D

main(){system("rename OldName.exe NewName.exe");}

هل حلي صحيح ؟

في ويندوز على الأقل ..

 

شكرا لك

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

حلك تقرياً غش :P ،

لكنني أريد حلاً يعمل بجميع الأنظمة، :D دون الحاجة الى إستخدام أدوات النظام .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

:D نعم شعرت بأنه غش  ... ولكن على كل حال system من pure c ولكنها تستخدم dirty c في مضمونها :D (هل هناك شيء اسمه dirty c )

على كل حال لا يزال دماغي يتدغدغ .. وإن لم يسبقني أحد فسأصل إلى الحل بإذن الله :)

شكرا جزيلاً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

 

هل هذا ما تريده ؟ :)

#include <stdio.h>int main(){   if (rename("Untitled.c", "Snack3r.c") == -1)   perror("rename");   return 0;}
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

@snacker

إقتربت من الجواب، لكنك و مصطفي إفترضتم أن إسم البرنامج لن يتغير، لكن ماذا لو غيره المستخدم،

 

أنا أريد طريقة لإعادة تسمية البرنامج مهما كان إسمه،  :evil:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هل تريد إعادة تسمية ملف السورس كود أو إعادة تسمية الملف التنفيذي ؟
إذا كنت تريد الأولى فأعتقد أن الكود التالي يفي بالغرض :)

#include <stdio.h>int main(){   if (rename(__FILE__ , "Snack3r.c") == -1)   perror("rename");   return 0;}
تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

إستخدام __FILE__ فكرة جيدة   :uwish:   ، لكنها ليست المطلوب،  :tbbash:

المطلوب تغيير إسم الملف التنفييذي مهما كان إسمه ..

 

hint

تذكر الـ Argument التي ترسل للدالة main ()  :tbyeah:

 

 

 

أرجو تعديل التحدي بالموضوع الى

تغيير إسم الملف التنفييذي مهما كان إسمه ..

 

أو أي جملة أخرى معبرة

تم تعديل بواسطه zirek99i
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

#include <stdio.h>#include <stdlib.h>int main(int argc, char ** argv){    int result;    char * oldname = argv[0];    result= rename( oldname , "hello.exe" );    if ( result == 0 ){            puts ( "File successfully renamed" );    }    else{            perror( "Error renaming file" );    }    return 0;}
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

@bigginer

جوابك صحيح  ;)

 

جوابي

#include <stdio.h> int main(int argc, char **argv) {    if(rename(argv[0], "newName")) {        perror("rename");        return 1;    }	    return 0;}
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائعة :)

الغريب أن جسم الدالة rename موجودة في ملفات dll أو شيئاً كهذا .. (أستعمل VC ) يعني الكود غير متاح ! غريب

 

شكراً استفدت :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائعة :)

الغريب أن جسم الدالة rename موجودة في ملفات dll أو شيئاً كهذا .. (أستعمل VC ) يعني الكود غير متاح ! غريب

 

شكراً استفدت :)

 

أغلب الظن ان rename تستخدم MoveFile، فتقريبا كل الدوال عبارة عن واجهة للـ Win32 api، لم أتحقق من ذلك، لكن يمكنك بكل سهولة التأكد منه  ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .