C語言提取文件擴展名,分析文件路徑提取文件擴展名算法代碼



本原創文章來源:C++技術網 http://www.cjjjs.cn ,閱讀更多原創精品文章,歡迎訪問C++技術網。



        以前學習時做的寫的一個小算法,就是分析文件路徑,提取文件擴展名。這個在處理文件時會用到。說到底,就是分析字符串的問題。這里使用C語言實現,將分析的算法封裝在一個函數中,方便使用。大家需要使用,可以自己再調整算法代碼。


        程序運行截圖:


         


        下面是程序代碼,完整的控制台代碼:


#include <stdio.h>
#include <string.h>
char * getType(char fileName[], char type[])
{    
    int i=strlen(fileName)-1, j;
    char ch;
    for(type[0]='\0';i>=0;i--)
    {        
        if(fileName[i] == '.')        
        {
            // 遇到文件類型分隔符             
            for(j=i; fileName[j]!='\0'; j++)            
            {                
                ch = fileName[j];                
                type[j-i] = ('A'<=ch && ch<='Z') ? (ch+'a'-'A'): ch;            
            }                            
            type[j-i] = '\0';             
            break;        
        }
    }        
    return type;
}
char * getTypeName(char type[], char typeName[])
{    
    if(strcmp(".doc", type) == 0)        
        strcpy(typeName, "WORD 文檔");             
    else if(strcmp(".xlsx", type) == 0)        
        strcpy(typeName, "Excel 工作表");             
    else if(strcmp(".pptx ", type) == 0)        
        strcpy(typeName, "PowerPoint 演示文稿");             
    else if(strcmp(".txt", type) == 0)        
        strcpy(typeName, "文本文檔");     
    else         
        strcpy(typeName, "其他類型文檔");
    return typeName;
}
int main(int argc, char *argv[]) {          
    char fileName[300];     
    char type[10];     
    char typeName[100];     
    printf("輸入文件名,可以包含多層目錄路徑,可以含空格,按 ctrl + z 停止輸入\n");    
    while(gets(fileName)!=NULL)    
    {        
        getType(fileName, type);        
        getTypeName(type, typeName);                
        printf("file:[%s] type is [%s],文件類型:%s\n", fileName, type,typeName);    
    }      
    return 0;
}
    
        
    
    
            代碼解釋:
    
    
            strlen、strcmp、strcpy函數在string.h頭文件中聲明,所以需要包含這個頭文件。getType函數就是提取文件擴展名的函數了。函數的第二個參數和返回值,都是作為返回擴展名的。你可以根據情況取舍。
    通過對文件名字符長度計數,然后從最尾部向字符串開頭的方向遍歷,第一次遇到的.號的位置就是擴展名分割的地方。然后在里層的for循環中提取到字符串結尾之間的幾個字符作為擴展名。
    
    
            至於getTypeName則是解釋一下擴展名的類型名稱,沒有什么,就是演示提取到擴展名后的使用場景而已。在main中也有使用的代碼。完整的代碼,可以很清楚各個地方的細節。
    
    
            學習時留存的筆記,分享出來,就不再電腦存留了,在電腦容易丟失。這樣,大家也可以看,一舉兩得。
    


本原創文章來源:C++技術網 http://www.cjjjs.cn ,閱讀更多原創精品文章,歡迎訪問C++技術網。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM