2013年6月7日 星期五

[C/C++基礎]- 純 C 字串反轉、路徑、檔名和副檔名拆解

[C/C++基礎]- C 字串反轉路徑、檔名和副檔名拆解



本篇要分享- C 字串反轉路徑、檔名和副檔名拆解程式,有興趣的(C/P)同好,歡迎來(C/P)一下哈哈 ^ ^









#include <iostream>

#include <fstream>

#include <cstring>

#include <cstdio>

usingnamespace std;

char chrFileName[200],chrPath[200];

char chrFileExt[20];

void GetFileName(char *data);

int main()

{

    fstream a;

    char fg[700];

    char chrd1[100],chrd2[100],chrd3[100],chrd4[100],chrd5[100],chrd6[100],chrd7[100],chrd8[100];

    a.open("123.txt",ios::in);

    while(!a.eof())

    {

        a.getline(fg,700);

        sscanf (fg ,"%[^ || ] || %s || %s %s || %s || %s || %s || %s ",chrd1,chrd2,chrd3,chrd4,chrd5,chrd6,chrd7,chrd8);

        cout<<chrd6<<"\n";

        GetFileName(chrd6);

        cout<<chrPath<<"\n";

        cout<<chrFileName<<"\n";

        cout<<chrFileExt<<"\n";

    }

    return 0;

}

void GetFileName(char *data)

{

    chrPath[0]='\0';

    chrFileName[0]='\0';

    chrFileExt[0]='\0';

    int i,intcount;

    int j=0;

    int k=0;

    char d;

    intcount=strlen(data);

    for(i=(intcount-1);i>=0;i--)

    {

        if((data[i]!='/')&&(data[i]!='\\'))

        {

            d=data[i];

            chrPath[j]=d;

            j++;

        }

        else

        {

            break;

        }

    }

    chrPath[j]='\0';

    for(int i=0;i<j;i++)

    {

        if(i<(j-4))

        {

            chrFileName[i]=chrPath[j-i-1];

            chrFileName[i+1]='\0';

        }

        else

        {

            chrFileExt[k]=chrPath[j-i-1];

            k++;

            chrFileExt[k]='\0';

        }

    }

    chrPath[0]='\0';

    for(i=0;i<(intcount-j);i++)

    {

        chrPath[i]=data[i];

    }

    chrPath[(intcount-j)]='\0';

    //cout<<chrPath<<"\n";

    //cout<<chrFileName<<"\n";

}

 



 PS測試資料如下:


 


130603161 || 社會 || 2013/06/04 12:10 || 60122788 || 100.100.200.165/13CHUTNEWS/20130603/s130603161.mp4 || 天梯上百遊客脫困 1男子遭落石砸頭 || 中視 ||


 


沒有留言:

張貼留言