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

[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男子遭落石砸頭 || 中視 ||

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *