windows:
使用標頭檔案:、
關鍵函式:_findfirst、_findnext
關鍵結構體:_finddata_t
[cpp]
view plain
copy
_finddata_t
fileinfo;
intptr_t
hfile;
string root;
root.assign(path);//資料夾絕對路徑
intlen = root.length();
if( !isendobliqueline(path) )
//路徑的結尾不是『\』
);//路徑下的所有檔案
hfile = _findfirst(root.c_str(), &fileinfo);
if( -1 == hfile)
strcpy(m_currentpath, path);//儲存到m_currentpath
//清空之前path的資訊
filespathvector.clear();//自定義的儲存資訊的容器
do//儲存資訊
; transfileinfo(fileinfo, tmpdirinfo);
filespathvector.push_back(tmpdirinfo);
}while
(_findnext(hfile, &fileinfo) == 0);
linux:
使用標頭檔案: 、 、
關鍵函式:readdir、lstat
關鍵結構體:dirent
[cpp]
view plain
copy
"white-space:pre;"
> dir *dir;
if( !(dir = opendir(path)) )
"white-space:pre;"
> strcpy(m_currentpath, path);
//儲存到m_currentpath
struct
dirent *d_ent;
char
fullpath[128];
filespathvector.clear();
while
( (d_ent = readdir(dir)) != null )
memset(fullpath, '\0'
, sizeof
(fullpath));
strcpy( fullpath, path);
if( !strcmp(fullpath,
"/") )
strcat(fullpath, "/"
);
strcat(fullpath, d_ent->d_name);
if( lstat(fullpath, &file_stat) < 0 )
//儲存資訊到自己的資料結構,在函式外面儲存檔名
listcmd_info tmpdirinfo = ;
strcpy(tmpdirinfo.cfilename, d_ent->d_name);
transfileinfo(&file_stat, tmpdirinfo);
filespathvector.push_back(tmpdirinfo);
} closedir(dir);
值得注意的是,此種方法windows的路徑分隔是用'\',而linux用'/',使用時多少有點不便。
如果有其他更好得方法,歡迎交流!
C 獲取linux和windows系統的使用者名稱
1 獲取linux系統的使用者名稱 通過 structpasswd getpwuid uid t uid 函式 該函式返回passwd結構體,此結構體中包含使用者名字段 structpasswd 2 獲取windows系統的使用者名稱 通過getusername buffer len 函式 3 完整...
C 獲取linux和windows系統的使用者名稱
1 獲取linux系統的使用者名稱 通過 structpasswd getpwuid uid t uid 函式 該函式返回passwd結構體,此結構體中包含使用者名字段 structpasswd 2 獲取windows系統的使用者名稱 通過getusername buffer len 函式 3 完整...
獲取Windows版本
要利用api獲取windows 8.1的版本號,必須自定義manifest檔案,指定程式支援windows8.1,manifest檔案如下 將manifest檔案應用到專案 專案 屬性 清單工具 輸入和輸出 將manifest檔案的名稱填入到 附加清單檔案 裡面,編譯。獲取windows版本的 如下...