c语言获取文件名

c语言获取文件名,第1张

void get_filename(char *path, char *name)

{

    int i,j = 0

    for(i = 0 path[i] i ++)

        if(path[i] == '\\') j = i

    strcpy(name, &path[j])

}

这样得到的name就是你需要的。孙悔

PS:对于春含windows 路径中的是\ 而不扒凯笑是你题目中的/

在tc20中,一旦你成功打开一个文件,他将返回一个文件指针。

FILE *fp

fp=fopen("abc.dat",文件状态(如w,r,r+))

当上面的 *** 作成功后文件指针fp就会赋予你打开文件的最基本信息!

FILE结构在Turbo C在stdio.h文件中有以下的文件类型声明:

typedef struct

{

short level             核悔简    /*缓冲区“满”或“空”的程度*/

unsigned flags              /*文件状态标志*/

char fd                    /*文件描述符(句柄)*/

unsigned char hold          /*如无缓冲区不读取字符*/

short bsize                 /*缓冲区的大小*/

unsigned char *buffer        /*数据缓冲区的位置*/

unsigned ar *curp           /*指针,当前的指向*/

unsigned istemp            /*临时文件,指示器*/

short token                /*用于有效性检查*/

}FILE

为管理你打开的文件, *** 作系统为所有的文件创建一个打开文件信息的结构数组---文件控制块(FCB),而文件描述符就承担了访问与之对应的文件控制块的使命,他在c中就充当文件句柄。每一个文件都需要唯一的一个标识,这样才能管理若干个文件

FCB他存贮改裤这你所有打开文件的信息,而只有通过文件句柄才能访问与之对应的FCB,从而访问你的文件.

文件句柄,就是FCB结构数组的下前滚标

所以,通过文件指针获得文件名的 *** 作路线:

FILE *fp

char  fd = fp->fd

FCB *fcb

char *filiname = fcb[fd].filiname

利用FCB(文件控制块) *** 作的例子见:

http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=8747&ampkindLevel=1&kindId=24655&postId=40710&readSg=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

}


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

原文地址: https://outofmemory.cn/tougao/12248447.html

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

发表评论

登录后才能评论

评论列表(0条)

保存