blog.rayanoos.ir 1396/12/18 09:49
شاید برای شما هم پیش آمده که لازم باشد بدانید کاربر برنامه شما را چه نامگذاری کرده و یا برنامه در کدام فولدر قرار دارد.
در این پست به بررسی چگونگی دریافت نام و آدرس برنامه میپردازیم.
توجه کنید که ما با تعریف یک پوینتر کاراکتری در تابع اصلی میتوانیم آدرس و نام برنامه را بدست آوریم که یعنی
int main( int a, char ** address)
در تابع اصلی میتوانیم آدرس و نام فایل برنامه را بدست آوریم address[0] با تعریف خط بالا و با استفاده از 

استفاده شده b از  address در سورس زیر به جای *
در ادامه نیز با استفاده از متغیر های کاراکتری نام فایل را از آدرس فایل جدا کردیم *
را نیز اینکلود کنید  string.h
در صورتی که بخواهید از این سورس در زبان  سی پلاس پلاس استفاده کنید می بایست کتابخانه *
 



#include <stdio.h>
#include <stdlib.h>
int main(int a, char **b)
{
    char adr[512];
    int iad=1,len,lenn;

    for (iad=1; iad<=sizeof(adr); iad++)
    {
        adr[iad-1]='\0';
    }
    adr[sizeof(adr)]='\0';

    strncat(adr,b[0],sizeof(adr));
    for ( iad = sizeof(adr); iad; iad--)
    {
        if (adr[iad]=='\\')
// این قسمت مخصوص سیستم عامل ویندوز است و برای استفاده در لینوکس باید به جای \\ از / استفاده کنید
        {
            len=iad;
            break;
        }
    }
    for (iad = len; iad<=sizeof(adr); iad++)
    {
        if (adr[iad]=='\0')
        {
            lenn = iad-len;
            break;
        }
    }
    char namefile[lenn],adrfile[len];

    for (iad = len+1 ; iad<sizeof(adr); iad++ )
    {
        if (adr[iad-1]=='\0')
            break;
        namefile[iad-len-1] = adr[iad];
    }
    for (iad = 1; iad<=len; iad++)
    {
        adrfile[iad-1]=adr[iad-1];
    }
    adrfile[len+0]='\0';
    adrfile[len+1]='\0';

    printf("Address:%s\nFileName:%s",adrfile,namefile);
    getch();
}