- A+
所属分类:建站
windows上的文件列表 linux上会报错
#include<time.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include <stdlib.h>
#include <windows.h>
#include <direct.h>
//#pragma comment(lib,"ws2_32.lib")
#include <io.h>
main(){
//声明一个二维字符串数组用来存储 文件名字的 现在还不知道 动态长度的字符串怎么声明
char result[100][50];
int *i;
i = 0;
int i_addr = &i;// main 里边的变量 可在任何方法中调用并可以时刻修改值的地址
char file_path[50];
time_t start,end;
printf("请输入文件的绝对路径:\n");
scanf("%s",file_path );
start = time(NULL);
file_list(file_path,i_addr,result);
end = time(NULL);
printf("runtime is:%f(s)\n",difftime(end,start));/*调用difftime函数,从start到end说经过的时间*/
printf("result结果的长度是%d\n",sizeof(result));
int num = *(int *)i_addr;
printf("num的值是%d\n",num);
int s;
for(s=0;s<num;s++){
printf("result的第%d次结果是%s\n",s,result展开);
}
return 0;
}
int file_list(char *file_path,int i_addr,char result[100][50]){
struct _finddata_t file;//定义结构体 file
long handle; //定义 资源类型 andle
int file_num = 1;//定义当前目录的第几个文件或目录
FILE *pf = NULL;
char temp_file_path[300];//目录的绝对路径的临时存放地址
strcpy(temp_file_path, file_path);
strcat(temp_file_path,"*.*");//这个地方可以 通过正则匹配来声明更多的参数和功能
printf("当前要打开的文件路径:%s\n",temp_file_path);
handle = _findfirst(temp_file_path,&file);//查找目录或文档 然后将结果 放入 ile中
//如果查询成功则 handle = 0;
if(handle == -1){
//没有查询到任何信息
return 0;
}else{
if(file.name[0] != '.'){
printf("当前目录%s的第%d个文件名字是:%s\n",file_path,file_num,file.name);
//将查出来的 文件名字 存入字符串数组
/*这里是要开始将 外层 i的值变化的 start */
int num=0;
num = *(int *)i_addr;
strcpy(result[num],file.name);
printf("文件名字是%s\n",result[num]);
num++;
*(int *)i_addr = num;
/*这里是要开始将 外层 i的值变化的 end */
}
}
while (!(_findnext(handle, &file))){
if(file.name[0] != '.'){
file_num++;
printf("当前目录%s的第%d个文件名字是:%s\n",file_path,file_num,file.name);
printf("当前目录%s的第%d个文件类型是:%#x\n",file_path,file_num,file.attrib);
int num = 0;
num = *(int *)i_addr;
strcpy(result[num],file.name);
num++;
*(int *)i_addr = num;
printf("-------------------\n");
if(file.attrib == _A_SUBDIR){
//如果是目录的话
//继续调用自己再次 查询
//整理查询前要传递的参数
char son_file_path[300];
strcpy(son_file_path,file_path);
strcat(son_file_path,file.name);
strcat(son_file_path,"/");
printf("当前目录%s的第%d个儿子目录全路径是:%s\n",file_path,file_num,son_file_path);
file_list(son_file_path,i_addr,result);
}
}
}
_findclose(handle);
}
linux上的初步操作 --只能获取一层的并不是所有的
#include <stdio.h>
#include <dirent.h>
void main(int argc, char * argv[])
{
char ch,infile[50],outfile[50];
struct dirent *ptr;
DIR *dir;
dir=opendir("G:/c");
while((ptr=readdir(dir))!=NULL)
{
//跳过'.'和'..'两个目录
if(ptr->d_name[0] == '.')
continue;
printf("%s is ready...\n",ptr->d_name);
sprintf(infile,"./one/%s",ptr->d_name);
printf("<%s>\n",infile);
}
closedir(dir);
}
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-