c语言读取文件名问题

c语言读取文件名问题,第1张

用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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8006057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存