① 文件的查找 我想在已知文件夹名未知文件夹路径的时候搜索 要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
...................