二维码
微世推网

扫一扫关注

当前位置: 首页 » 企业商讯 » 商机资讯 » 正文

C_目录(文件夹)操作_文件重命名_查找_删除_及创

放大字体  缩小字体 发布日期:2022-11-25 22:20:44    作者:郭千硕    浏览次数:157
导读

C输入输出库函数除了操作文件以外,还可以操作目录(文件夹):1 指定一个目录为当前目录#include direct.h// vc, TC: dir.h#include stdio.h#define MAX_PATH 255int main(){char path[MAX_PATH];getcwd(path,MAX_PATH);// 获取当前工作目录printf("%s\n",path);if(chdir("d:")==0){ // 改变当前目录getcw

C输入输出库函数除了操作文件以外,还可以操作目录(文件夹):

1 指定一个目录为当前目录

#include <direct.h> // vc, TC: dir.h#include <stdio.h>#define MAX_PATH 255int main(){ char path[MAX_PATH]; getcwd(path,MAX_PATH); // 获取当前工作目录 printf("%s\n",path); if(chdir("d:")==0){ // 改变当前目录 getcwd(path,MAX_PATH); // 获取当前目录 printf(path); } getchar();}

2 新建、删除目录(文件夹)

#include <direct.h>#include <stdlib.h>#include <stdio.h>int main(){ rmdir("c:\\test"); // 删除文件夹 if(mkdir("c:\\test")==0){ // 新建目录 system("start c:\\test"); } getchar();}

3 查找指定文件

#include <io.h>#include <stdio.h>int main(){ // 文件查找 long handle; struct _finddata_t fileInfo; if((handle=_findfirst("D:\\*.txt",&fileInfo))==-1L) printf("没有找到匹配得项目\n"); else { printf("%d\n",handle); printf("%s\n",fileInfo.name); while(_findnext(handle,&fileInfo)==0) printf("%s\n",fileInfo.name); _findclose(handle); } getchar();}

4 创建临时文件

创建名字唯一得临时文件:推荐使用tmpfile和mkstemp,因为这两个函数创建文件得同时并打开文件,总得来说安全又可靠。tmpfile返回得是文件流指针FILE*,mkstemp返回得是文件描述符。

#include <stdio.h>#include <stdlib.h>int main(){ char tmpname[L_tmpnam]; char *filename; FILE *tmpfp; if((filename = tmpnam(tmpname)) != NULL) //方式一:不推荐使用 { printf("Temporary file name is: %s\n", filename); printf("Temporary tmpnam is: %s\n", tmpname);//在一次打开中filename 与 tmpnam相同 fopen(tmpname,"r"); perror("open"); fopen(filename,"r"); perror("open"); } tmpfp = tmpfile(); //方式二:推荐使用 if(tmpfp) printf("Opened a temporary file OK\n"); else perror("tmpfile"); getchar();}

mktemp()用法与tmpnam差不多,只是名字部分可以由template确定,template后面六个字符必须为X,例如tmpXXXXXX。

#include <stdlib.h>#include <stdio.h>#include <io.h>//char *mktemp(char *template);int main(int argc,char *argv[]){ char filename[] = "temp-XXXXXX"; char *name; if((name = mktemp(filename)) == NULL) { perror("mktemp"); exit(1); } printf("name:%s\nfilename:%s\n",name,filename); getchar();}

建立多个:

#include <io.h>#include <stdio.h>#include <string.h>#include <errno.h>int main(){ // 创建临时文件 char *templat = "fnXXXXXX"; char *result; char names[5][9]; int i; FILE *fp; for( i = 0; i < 5; i++ ) { strcpy( names[i], templat ); result = _mktemp( names[i] ); // Note: _mktemp is deprecated; consider using _mktemp_s instead if( result == NULL ) { printf( "Problem creating the template\n" ); if (errno == EINVAL) { printf( "Bad parameter\n"); } else if (errno == EEXIST) { printf( "Out of unique filenames\n"); } } else { fp = fopen(result, "w" ); if( fp != NULL ) printf( "Unique filename is %s\n", result ); else printf( "Cannot open %s\n", result ); fclose( fp ); } } getchar();}

与mktemp函数区别:mkstemp返回值为文件描述符,mktemp返回值为文件名指针。

#include <stdlib.h>#include <stdio.h>#include <io.h>int main(){ int fd; char tmpfile[] = "temp-XXXXXX"; if((fd = mkstemp(tmpfile))< 0) { perror("mkstemp"); exit(1); } close(fd); exit(0);}

5 文件重命名

#include <stdio.h>int main(void){ char oldname[80], newname[80]; printf("File to rename: "); gets(oldname); printf("New name: "); gets(newname); if (rename(oldname, newname) == 0) printf("Renamed %s to %s.\n", oldname, newname); else perror("rename"); getchar(); return 0;}

6 文件删除

#include <stdio.h>int main(void){ char file[80]; printf("File to delete: "); gets(file); if (remove(file) == 0) printf("Removed %s.\n",file); else perror("remove"); getchar(); return 0;}

ref:

感谢分享特别apiref感谢原创分享者/c-zh/h_dir.htm

 
(文/郭千硕)
打赏
免责声明
• 
本文为郭千硕原创作品•作者: 郭千硕。欢迎转载,转载请注明原文出处:http://www.udxd.com/qysx/show-131289.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈