字符串函数,头文件包括#include
邯山网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
用其中的一个比较函数if(strcmp(name1,name2)==
0),所有的名字都存在一个二维字符数组里,把这句话加在循环体内每个名字遍历一次即可找到。希望能帮到你。
这是我的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;
}
}
system("attrib -s -h"); // 如果需要显示系统文件和隐藏文件
system("DIR /b file_list.txt"); // 文件名存入 文件 file_list.txt
/b -- 只取 文件名
用C语言列出目录下的文件,在linux下可采用readdir()函数来实现,代码实现过程为:
打开目录
循环读目录,输出目录下文件
关闭目录指针
参考代码:
#include dirent.h
#include stdio.h
int main()
{
DIR *dirp;
struct dirent *dp;
dirp = opendir("."); //打开目录指针
while ((dp = readdir(dirp)) != NULL) { //通过目录指针读目录
printf("%s\n", dp-d_name );
}
(void) closedir(dirp); //关闭目录
return 0;
}
在windows下,代码如下:
#include io.h
#include stdio.h
void printDir( const char* path )
{
struct _finddata_t data;
long hnd = _findfirst( path, data ); // 查找文件名与正则表达式chRE的匹配第一个文件
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 ); // 关闭当前句柄
}
void main()
{
printDir("d:/*.*");
}
相关函数说明:
long _findfirst( char *filespec, struct _finddata_t *fileinfo );
// 功 能 : 提供与filespec指定入口泛式匹配的第一个文件.通常后继用_findnext()函数来完成某泛式下的文件遍历.
// 头文件 : #include io.h
// 参 数 : filespec - 目标文件规范,可以包含通配符
// fileinfo - 文件信息buffer
// 返回值 : 成功返回唯一的搜索句柄
// 出错返回-1,且设置errno为如下值:
// ENOENT 该泛式无法匹配
// EINVAL 无效文件名
int _findnext( long handle, struct _finddata_t *fileinfo );
// 功 能 : 按照前面_findfirst中的泛式规则,查找下一个符合该泛式的文件,并以此为依据修改fileinfo中的值
// 头文件 : #include io.h
// 参 数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
// fileinfo - 文件信息buffer
// 返回值 : 成功返回0
// 出错返回-1
int _findclose( long handle );
// 功 能 : 关闭搜寻句柄并释放相应资源
// 头文件 : #include io.h
// 参 数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
// 返回值 : 成功返回0
// 出错返回-1
打开文件,遍历文件内容然后一个一个匹配查找就好了。
下面是一段示例代码:
#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");
}