هل من الممكن الحصول على اسم القابل للتنفيذ بدون المسار؟
-
21-09-2019 - |
سؤال
مرحبًا ، أحاول استخدام اسم السلسلة القابلة للتنفيذ وسلسلة الاستخدام ، أنا أستخدم argv[0]
لهذا الغرض ولكن بدلاً من اسم القابل للتنفيذ نفسه ، فإنه يعطيني المسار الكامل إليه.
هل هناك أي طريقة للحصول على الاسم القابل للتنفيذ فقط؟
المحلول
فقط ابحث عن آخر /.
const char *exename = strrchr(argv[0], '/');
if (exename)
// skip past the last /
++exename;
else
exename = argv[0];
نصائح أخرى
على حد علمي ، (على Linux ، على الأقل) عليك فقط استخراج الاسم القابل للتنفيذ من char* بنفسك.
أسهل طريقة للقيام بذلك هي الاستخدام basename(argv[0])
, ، والتي يمكنك الحصول عليها من خلال تضمين "libgen.h".
إذا كانت متوفرة على النظام الأساسي الخاص بك ، فهناك وظيفة char *basename(char *path)
. يرى وثائق الاسم الأساسي.
استخدام getModuleFilename http://msdn.microsoft.com/en-us/library/ms683197٪28vs.85٪29.aspx مع وسيطة المقبض = 0
فقط استخدم الجزء الأخير من سلسلة المسار. مزيج من مكالمة إلى strrchr
(احصل على محدد المسار الأخير) و EG strcpy
أو على غرار نسخ الجزء من محدد المسار الأخير إلى النهاية
يمكنك استخدام getprogname()
إذا تم تعيين اسم البرنامج بواسطة نظام التشغيل الخاص بك.