當前位置:首頁 » 編程語言 » c語言查找目錄文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言查找目錄文件

發布時間: 2022-02-06 08:06:10

① 文件的查找 我想在已知文件夾名未知文件夾路徑的時候搜索 要c語言


這是我的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;
}
}

② c語言怎麼查找制定目錄下的文件是否存在

C語言中用OPEN函數就可以判斷出指定目錄下的文件是否存在。
比如:
#include<stdio.h>
main()
{
FILE *fp;
if((fp=fopen("c:\\filechk.txt","r"))==NULL)printf("this file is not exist";//文件不存在
else
printf("Open sucess");
close(fp);
}

③ c語言 怎麼查找 當前目錄有哪些 文件

在命令提示符窗口運行:findfile (盤符): *.(文件後綴)
如:[sourcecode language=」plain」]findfile d: *.txt [/sourcecode]
即為找出d盤根目錄下的所有.txt後綴的文件並寫入文件路徑於文件中。

④ c語言實驗:查找c盤中的所有文件夾,對於子文件夾中的文件也要進行查找輸出。

優化了一下,但還是有bug,需要細查
#include<io.h>
#include<stdio.h>
#include<string.h>
#define_A_SUBDIR0x10/*Subdirectory*/

voidsearch(char*str1)
{
longflag1=0;
longhandle1;
chars1[]="\",s2[]="*.*",s3[100],name[100];
struct_finddata_tffblk1;

strcat(str1,s1);strcpy(s3,str1);strcat(str1,s2);
handle1=_findfirst(str1,&ffblk1);
while(!flag1)
{
if(strcmp(ffblk1.name,".")&&strcmp(ffblk1.name,".."))
{
if(ffblk1.attrib==_A_SUBDIR){
printf("%sisasub-directory ",ffblk1.name);
strcpy(name,ffblk1.name);
strcat(s3,name);
search(s3);
}
else{
printf("%s ",ffblk1.name);
}
}
flag1=_findnext(handle1,&ffblk1);
}
}

voidmain()
{
// struct_finddata_tffblk;
charstr[200]="C:";//必須是數組,不然空間不夠
search(str);
}

⑤ 怎樣使用C語言列出某個目錄下的文件

不過,利用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變數的指針,查找到剛文件的有關信息同樣將存放到該變數中。

⑥ 如何在linux系統中用C語言編程實現以非遞歸的方式查詢指定目錄下所有子目錄的全部文件並保存文件名

把迭代得到的非文件文件夾項,即子目錄保存到一個stack中。
隨後逐個彈出棧頂元素並迭代之,就實現了以非遞歸方式遍歷文件夾。

⑦ C語言:在當前目錄下的文件中查找記錄並輸出到屏幕,咋編

格式化讀取文本到內存中,再自己寫個字元串對比函數(詳細查詢就要把字元串的每個字元(或者說是bit位)都要對比成功,模糊查詢對比關鍵字就可以了),對比成功就可查詢到了。

⑧ 怎樣使用C語言列出某個目錄下的文件

C語言本身沒
提供象dir_list()
函數


目錄

文件
利用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變數
指針
查找
剛文件
關信息同
存放
該變數
利用
述兩
函數
find_t結構
遍歷磁碟

目錄
並列
該目錄

文件
請看
例:
#include
<stdio.h>
#include
<direct.h>
#include
<dos.h>
#include
<malloc.h>
#include
<memory.h>
#include
<string.h>
typedef
struct
find_t
FILE_BLOCK
void
main(void);
void
main(void){FILE_BLOCK
f-block;
/*
Define
the
find_t
structure
variable
*
/
int
ret_code;
/
*
Define
a
variable
to
store
the
return
codes
*
/
/
*
Use
the
"*.*"
file
mask
and
the
0xFF
attribute
mask
to
list
all
files
in
the
directory,
including
system
files,
hidden
files,
and
subdirectory
names.
*
/
ret_code
=
_dos_findfirst("
*.
*
",
0xFF,
&f_block);
/*
The
_dos_findfirst()
function
returns
a
0
when
it
is
successful
and
has
found
a
valid
filename
in
the
directory.
*
/
while
(ret_code
==
0){/*
Print
the
file's
name
*
/
printf("
%-12s
,
f_block,
name);
/
*
Use
the
-dos_findnext()
function
to
look

⑨ C語言怎樣查找文件

你參考一下
#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}

⑩ c語言文件查找

用dos命令就行啊,如果你真要用C,就把DOS命令嵌入C代碼中吧,這個最簡單

首先加上頭文件:
#include"stdlib.h"
#include"stdio.h"
int main(int argc,char *argv[])
{char inpu[128]="dir "; int i;
system("graftabl 936");
system("echo on");
system("cls");
for(i=4;i<128;i++)
{inpu[i]=argv[1][i-4];
if(inpu[i]=='\0') break;
}
system(inpu);
system("pause");
/*到這里就把DOS命令DIR嵌入到C語言中了,另外還能加入一些DOS開關,能使輸出結果不同具體見cmd 下的help dir*/
}
輸出結果和輸入DIR一樣:
驅動器 C 中的卷沒有標簽。
卷的序列號是 4C02-5551

c:\WINDOWS 的目錄

2007-08-23 18:32 <DIR> .
2007-08-23 18:32 <DIR> ..
2006-12-07 20:48 0 0.log
2006-11-16 20:43 <DIR> addins
2006-06-23 17:07 176,128 amcap.exe
2006-11-16 20:43 <DIR> AppPatch
2004-06-06 14:13 82,944 clock.avi
2006-11-16 20:51 200 cmsetacl.log
2007-08-23 17:45 350,057 comsetup.log
2006-11-16 20:43 <DIR> Config
2006-11-16 20:43 <DIR> Connection Wizard
2006-11-16 20:55 0 control.ini
2006-11-16 20:43 <DIR> Cursors
2006-11-16 20:43 <DIR> Debug
2004-06-06 14:14 2 desktop.ini
2006-12-07 20:40 794 DirectX.log
2006-11-16 20:43 <DIR> Driver Cache
2007-08-23 16:20 641 DtcInstall.log
2006-11-16 20:43 <DIR> ehome
2004-08-04 08:52 976,896 explorer.exe
...................