用C语言读取目录中的文件名的方法:
1、如果是在window环境下,可以用一下方法:
使用stdlib.h头文件声明的system()函数
_CRTIMP int __cdecl system (const char*)
system("dir c:\\ /a:h /b >c:\\dir.txt")
调用系统命令dir,把c:目录下文件列表写入文件dir.txt中
2、使用dirent.h头文件中声明的opendir(),readdir()函数;
int main(int argc, char *argv[]){
DIR *directory_pointer
struct dirent *entry
if((directory_pointer=opendir("d:\\XL"))==NULL)
printf( "Error opening \n ")
else
{
while((entry=readdir(directory_pointer))!=NULL)
{
printf("%s\n",entry-> d_name)
}
closedir(directory_pointer)
}
system("PAUSE")
return 0
}
3、如果没有dirent.h,可以使用io.h头文件中声明的_findfirst(),_findnext()函数;
示例代码:
int main(int argc, char *argv[]){
long file
struct _finddata_t find
_chdir("d:\\")
if((file=_findfirst("*.*", &find))==-1L)
{
printf("空白!\n")
exit(0)
}
printf("%s\n", find.name)
while(_findnext(file, &find)==0)
{
printf("%s\n", find.name)
}
_findclose(file)
system("PAUSE")
return 0
}
用system 调用 DOS DIR 命令就可以了:system ( "dir sss_* /B >log.txt")
这就把 前缀为sss_的文件 文件名 存入 log.txt 文件了。
一个名字一行,没有别的东西。
你再 读出来。
#include <stdio.h>
main()
{
FILE *fp
char str[30][50] // 假定文件数不超过30个
int i,n=0
system("dir sss_* /B >log.txt")
fp=fopen("log.txt","r")
while(1){
if ( fgets(str[n],50,fp)==NULL) break
str[n][strlen(str[n])-1]='\0' // 加一个字符串结束符
n++
}
fclose(fp)
for (i=0i<ni++) printf("%s\n",str[i])
}
1、在linux平台,可采用目录 *** 作函数,读取当前目录下的文件#include <sys/types.h>
#include <dirent.h>//windows开发工具没有这个头文件
#include <unistd.h>
#include <string.h>
main()
{
DIR * dir
struct dirent * ptr
char file_list[100][40]
int i=0
dir = opendir("/etc/rc.d")//打开一个目录
while((ptr = readdir(dir)) != NULL) //循环读取目录数据
{
printf("d_name : %s\n", ptr->d_name)//输出文件名
strcpy(file_list[i],ptr->d_name )//存储到数组
if ( ++i>=100 ) break
}
closedir(dir)//关闭目录指针
}
2、在windows平台下,如VC也有类似的 *** 作函数,如:
#include <string>
#include <iostream>
using namespace std
#include <WINDOWS.H>
void main()
{
string szPath="d:/*.*"
WIN32_FIND_DATA wfd
HANDLE hFind
char file_list[100][40]
int i=0
hFind = FindFirstFile(szPath.c_str(), &wfd)
do
{
cout <<wfd.cFileName <<endl
strcpy(file_list[i],wfd.cFileName )//存储到数组
if ( ++i>=100 ) break
}while (FindNextFile(hFind, &wfd))
FindClose(hFind)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)