統計編碼量工具
阿新 • • 發佈:2018-03-06
attr rcm struct img fun 技術 == 過濾 出錯
利用windows提供的目錄操作庫和文件操作庫,統計指定目錄及其子目錄中所有.cpp、.c、.h文件的代碼量,用來檢測自己的編程工作量()。
1 #include <stdio.h> 2 #include <string.h> 3 #include <direct.h> 4 #include <malloc.h> 5 #include <io.h> 6 7 long nLen = 0; 8 int GetFileLength(char *pszPath) 9 { 10 FILE *pRead = fopen(pszPath, "r"); 11 if (NULL == pRead) 12 { 13 return -1; 14 } 15 char szBuf[1024]; 16 while (!feof(pRead)) 17 { 18 fgets(szBuf, sizeof(szBuf), pRead); 19 nLen++; 20 } 21 22 fclose(pRead); 23 24 } 25 int SearchPath(char *pszPath) 26 { 27 int rv = 0;28 rv = chdir(pszPath); 29 if (0 != rv) 30 { 31 printf("func chdir() error\n"); 32 rv = -1; 33 return rv; 34 } 35 36 struct _finddata_t data; 37 long handle; 38 if (-1L == (handle = _findfirst("*.*", &data))) //成功返回唯一的搜索句柄, 出錯返回-1 39 { 40 returnrv; 41 } 42 do 43 { 44 if (data.attrib == _A_SUBDIR ) 45 {//目錄類型 46 char szBuf[1024] = {0}; 47 if (strcmp(data.name, ".") != 0 && strcmp(data.name, "..") != 0) 48 { 49 sprintf(szBuf, "%s\\%s", pszPath, data.name); 50 SearchPath(szBuf); 51 } 52 } 53 else 54 {//單個文件 55 int nLen = strlen(data.name); 56 if (data.name[nLen - 1] == ‘p‘ && data.name[nLen - 2] == ‘p‘ && 57 data.name[nLen - 3] == ‘c‘ &&data.name[nLen - 4] == ‘.‘ ) 58 {//過濾出所有cpp的文件 59 printf(" [%s]\n", data.name ); 60 char szBuf[1024] = {0}; 61 sprintf(szBuf, "%s\\%s", pszPath, data.name); 62 GetFileLength(szBuf); 63 } 64 } 65 } while(_findnext( handle, &data ) == 0); //成功返回0 , 出錯返回-1 66 67 _findclose( handle ); // 關閉當前句柄 68 69 return rv; 70 } 71 72 int main() 73 { 74 char *pszPath = "L:\\谷歌大賽"; 75 SearchPath(pszPath); 76 printf("總代碼量為:%ld\n", nLen); 77 return 0; 78 }
統計編碼量工具