所在函數庫為dir.h、dos.h
創新互聯專業為企業提供泉港網站建設、泉港做網站、泉港網站設計、泉港網站制作等企業網站建設、網頁設計與制作、泉港企業網站模板建站服務,10余年泉港做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
int chdir(char *path) 使指定的目錄path(如:C:\\WPS)變成當前的工作目錄,成
功返回0
int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功
返回0
pathname為指定的目錄名和文件名,如C:\\WPS\\TXT
ffblk為指定的保存文件信息的一個結構,定義如下: struct?ffblk????????????????????????{????????????????????????????????????char?ff_reserved[21];?/*DOS保留字*/?char?ff_attrib;???????/*文件屬性*/??int??ff_ftime;????????/*文件時間*/??int??ff_fdate;????????/*文件日期*/??long?ff_fsize;????????/*文件長度*/??char?ff_name[13];?????/*文件名*/???}??????attrib為文件屬性,由以下字符代表
┃FA_RDONLY 只讀文件┃FA_LABEL 卷標號┃
┃FA_HIDDEN 隱藏文件┃FA_DIREC 目錄 ┃
┃FA_SYSTEM 系統文件┃FA_ARCH 檔案 ┃
例:
struct ffblk ff;
findfirst(*.wps,ff,FA_RDONLY);
int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0
void fumerge(char *path,char *drive,char *dir,char *name,char *ext)
此函數通過盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等)組成一個文件名
存與path中.
int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)
此函數將文件名path分解成盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等),并分別存入相應的變量中.
int getcurdir(int drive,char *direc) 此函數返回指定驅動器的當前工作目錄名稱
drive 指定的驅動器(0=當前,1=A,2=B,3=C等)
direc 保存指定驅動器當前工作路徑的變量 成功返回0
char *getcwd(char *buf,iint n) 此函數取當前工作目錄并存入buf中,直到n個字
節長為為止.錯誤返回NULL
int getdisk() 取當前正在使用的驅動器,返回一個整數(0=A,1=B,2=C等)
int setdisk(int drive) 設置要使用的驅動器drive(0=A,1=B,2=C等),
返回可使用驅動器總數
int mkdir(char *pathname) 建立一個新的目錄pathname,成功返回0
int rmdir(char *pathname) 刪除一個目錄pathname,成功返回0
char *mktemp(char *template) 構造一個當前目錄上沒有的文件名并存于template中
char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路徑,
,此函數使用DOS的PATH變量,未找到文件返回NULL
我不知道樓主具體指的是什么?什么叫取得目錄中的函數名?是指文件名嗎?
如果是的話,看這個程序:
#include
process.h
main()
{
clrscr();
system("dir
e:\\younger");
/*"e:\\younger"可以改成任意目錄*/
getch();
}這樣可以嗎,樓主?
在命令提示符窗口運行:findfile (盤符):\ *.(文件后綴)
如:[sourcecode language=”plain”]findfile d:\ *.txt [/sourcecode]
即為找出d盤根目錄下的所有.txt后綴的文件并寫入文件路徑于文件中。
這是我的TFTP程序中的一個函數,是搜索當前盤符下的所有文件,包括文件的大小,并發送到客戶端,其中就有查找當前路徑下的文件,你自己挑一下,應該能完成你的需求。
void FileList(sockaddr_in sour_addr,char strStartDir[])
{
char sendbuffer[1024];
sockaddr_in destaddr;
int sourlen = 0;
int ret = 0;
int len = 0;
int flen = 0;
fd_set fdr;
unsigned short blocknum = 0;
FILE *file;
char filename[128];
strcpy(filename,strStartDir+2); /*獲取文件名*/
strcat(filename,"\\*");
destaddr.sin_family = AF_INET;
destaddr.sin_port = sour_addr.sin_port;
destaddr.sin_addr.s_addr = inet_addr(desthost);//
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(filename, FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle");
}
else
{
while(FindNextFile(hFind,FindFileData))
{
printf(FindFileData.cFileName);
printf("\r\n");
memset(sendbuffer,'\0',1024);
len = filldata(blocknum++,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));
}
len = fillover(blocknum,"Over",4,sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));
FindClose(hFind);
return;
}
}
1、可以利用getenv函數來實現。
在Linux系統中,home目錄的定義是通過系統環境變量中的HOME變量值來確定的,在shell下可以通過
echo $HOME來查看。
而在C語言中,庫函數getenv可以用作獲取環境變量值。該函數位于stdlib.h, 原型為
char *getenv(char *name);
功能為獲取名字為name的環境變量字符串。
所以,下面代碼就可以獲取到home目錄名了:
2、例程:
char *home;
home = getenv("HOME");
printf("the home path is %s\n", home);
不過,利用C語言的幾個目錄函數,你可以自己編寫一個dir_list()函數。
首先,頭文件dos.h定義了一個find_t結構,它可以描述DOS下的文件信息,包括文件名、時間、日期、大小和屬性。其次,C編譯程序庫中有_dos_findfirst()和_dos_findnext()這樣兩個函數,利用它們可以找到某個目錄下符合查找要求的第一個或下一個文件。
dos_findfirst()函數有三個參數,第一個參數指明要查找的文件名,例如你可以用“*.*”指明要查找某個目錄下的所有文件。第二個參數指明要查找的文件屬性,例如你可以指明只查找隱含文件或子目錄。第三個參數是指向一個find_t變量的指針,查找到的文件的有關信息將存放到該變量中。
dos_findnext()函數在相應的目錄中繼續查找由_dos_findfirst()函數的第一個參數指明的文件。_dos_findnext()函數只有一個參數,它同樣是指向一個find_t變量的指針,查找到剛文件的有關信息同樣將存放到該變量中。
當前標題:c語言檢查文件目錄函數,c++查找文件中的內容
當前鏈接:http://m.kartarina.com/article16/heiedg.html
成都網站建設公司_創新互聯,為您提供網站策劃、網站建設、網站內鏈、品牌網站設計、搜索引擎優化、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯