主要通过rename()函数来实现,不过如果新路径文件已存在则会直接覆盖,如果像要询问后操作是否覆盖,可以通过调用
access()函数来处理;
小记:以下仅供参考,经测试,直接使用rename()函数就可以实现mv的功能。之所以贴出该代码,其中宏定义的打印函数值得借鉴
源码
#include <stdio.h>
#include <dirent.h>
#include <string.h>
typedef unsigned char BYTE;
typedef unsigned int DWORD;
typedef unsigned short WORD;
#define pri(fmt, ...) printf("["__FILE__"] <%s>_<%d> " ,__FUNCTION__,__LINE__ );\
printf(fmt, ##__VA_ARGS__);
int main()
{
/* 给文件重命名时保存临时变量 */
BYTE newname[80] = {
0};
memset(newname, 0 ,sizeof(newname));
/* 文件描述符 */
struct dirent *dirp;
DIR *dp;
/* 局部变量保存文件名称 */
BYTE buf[128][64];
/* 局部变量保存文件名个数 */
BYTE num=0;
char *path = "/mnt/hgfs/Ubuntu12.04-share/test/2_file/test_dir";
/* 打开路径 */
if ((dp = opendir(path))== NULL)
{
pri("opendir error \n");//打开目录失败
return -