C输入输出库函数除了操作文件以外,还可以操作目录(文件夹):,今天小编就来聊一聊关于c盘中可删除的文件?接下来我们就一起去研究一下吧!

c盘中可删除的文件(C目录文件夹)

c盘中可删除的文件

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

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

#include <direct.h> // vc, TC: dir.h #include <stdio.h> #define MAX_PATH 255 int 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(); } /* Temporary file name is: \s5tg. Temporary tmpnam is: \s5tg. open: No such file or directory open: No such file or directory Opened a temporary file OK */

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(); } /* name:temp-a04108 filename:temp-a04108 */

建立多个:

#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]; /* prompt for file to rename and new name */ printf("File to rename: "); gets(oldname); printf("New name: "); gets(newname); /* Rename the file */ if (rename(oldname, newname) == 0) printf("Renamed %s to %s.\n", oldname, newname); else perror("rename"); getchar(); return 0; } /* File to rename: d:\test.txt New name: d:\demo.txt Renamed d:\test.txt to d:\demo.txt. */

6 文件删除

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

ref:

https://www.apiref.com/c-zh/h_dir.htm

,