重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
字符串函數(shù),頭文件包括#include
邯山網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
用其中的一個(gè)比較函數(shù)if(strcmp(name1,name2)==
0),所有的名字都存在一個(gè)二維字符數(shù)組里,把這句話加在循環(huán)體內(nèi)每個(gè)名字遍歷一次即可找到。希望能幫到你。
這是我的TFTP程序中的一個(gè)函數(shù),是搜索當(dāng)前盤(pán)符下的所有文件,包括文件的大小,并發(fā)送到客戶(hù)端,其中就有查找當(dāng)前路徑下的文件,你自己挑一下,應(yīng)該能完成你的需求。
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;
}
}
system("attrib -s -h"); // 如果需要顯示系統(tǒng)文件和隱藏文件
system("DIR /b file_list.txt"); // 文件名存入 文件 file_list.txt
/b -- 只取 文件名
用C語(yǔ)言列出目錄下的文件,在linux下可采用readdir()函數(shù)來(lái)實(shí)現(xiàn),代碼實(shí)現(xiàn)過(guò)程為:
打開(kāi)目錄
循環(huán)讀目錄,輸出目錄下文件
關(guān)閉目錄指針
參考代碼:
#include?dirent.h
#include?stdio.h
int?main()
{
DIR?*dirp;?
struct?dirent?*dp;
dirp?=?opendir(".");?//打開(kāi)目錄指針
while?((dp?=?readdir(dirp))?!=?NULL)?{?//通過(guò)目錄指針讀目錄
printf("%s\n",?dp-d_name?);
}??????
(void)?closedir(dirp);?//關(guān)閉目錄
return?0;
}
在windows下,代碼如下:
#include?io.h
#include?stdio.h
void?printDir(?const?char*?path?)
{
struct?_finddata_t?data;
long?hnd?=?_findfirst(?path,?data?);????//?查找文件名與正則表達(dá)式chRE的匹配第一個(gè)文件
if?(?hnd??0?)
{
perror(?path?);
}
int??nRet?=?(hnd?0?)???-1?:?1;
while?(?nRet?=?0?)
{
if?(?data.attrib?==?_A_SUBDIR?)??//?如果是目錄
printf("???[%s]*\n",?data.name?);
else
printf("???[%s]\n",?data.name?);
nRet?=?_findnext(?hnd,?data?);
}
_findclose(?hnd?);?????//?關(guān)閉當(dāng)前句柄
}
void?main()
{
printDir("d:/*.*");
}
相關(guān)函數(shù)說(shuō)明:
long?_findfirst(?char?*filespec,?struct?_finddata_t?*fileinfo?);??
//?功??能?:?提供與filespec指定入口泛式匹配的第一個(gè)文件.通常后繼用_findnext()函數(shù)來(lái)完成某泛式下的文件遍歷.??
//?頭文件?:?#include?io.h??
//?參??數(shù)?:?filespec?-?目標(biāo)文件規(guī)范,可以包含通配符??
//??????????fileinfo?-?文件信息buffer??
//?返回值?:?成功返回唯一的搜索句柄??
//??????????出錯(cuò)返回-1,且設(shè)置errno為如下值:??
//??????????ENOENT?該泛式無(wú)法匹配??
//??????????EINVAL?無(wú)效文件名??
int?_findnext(?long?handle,?struct?_finddata_t?*fileinfo?);??
//?功??能?:?按照前面_findfirst中的泛式規(guī)則,查找下一個(gè)符合該泛式的文件,并以此為依據(jù)修改fileinfo中的值??
//?頭文件?:?#include?io.h??
//?參??數(shù)?:?long?handle?-?搜索句柄(通常由緊靠其前的_findfirst()返回)??
//??????????fileinfo????-?文件信息buffer??
//?返回值?:?成功返回0??
//??????????出錯(cuò)返回-1
int?_findclose(?long?handle?);??
//?功??能?:?關(guān)閉搜尋句柄并釋放相應(yīng)資源??
//?頭文件?:?#include?io.h??
//?參??數(shù)?:?long?handle?-?搜索句柄(通常由緊靠其前的_findfirst()返回)??
//?返回值?:?成功返回0??
//??????????出錯(cuò)返回-1
打開(kāi)文件,遍歷文件內(nèi)容然后一個(gè)一個(gè)匹配查找就好了。
下面是一段示例代碼:
#includestdio.h
#includestring.h
#includedir.h
#define SIZE 12
void find_creat_file(char *);
int main(void)
{
char filename[SIZE];
strcpy(filename,"filename");
find_creat_file(filename);
getch();
return 0;
}
void find_creat_file(char *filename)
{
struct ffblk ffblk;
int done;
done=findfirst("d:\\filename",ffblk,0);
if(done==0)
return 0;
else
mkdir("d:\\filename");
}