我用C语言编写这段代码,我首先找到登录的用户,然后从该用户的AppData,我需要复制一些文件。 我能够找到,用户,我能够生成路径,但事情是我不知道如何使用C复制文件夹及其内容所以我想到使用System()命令。 但是现在如果我使用COPY命令,它表示路径不正确,而实际上它是正确的并且如果我在CMD上使用相同的命令则工作正常。 此外,如果我使用XCOPY,它表示该命令不被识别为内部或外部命令,而XCOPY在CMD上工作正常。
有人可以告诉我如何实际复制文件夹及其内容?
我正在查看代码部分以生成文件路径和复制命令。
//making path variable
char path[100];
strcat(path,"C:\\Users\\");
strcat(path,username); //username is variable it gets value from function
strcat(path,"\\AppData\\Local\\Google\\Chrome\\*.*");
printf(path);
char command[100];
strcat(command,"copy ");
strcat(command,path);
strcat(command," D:\\myFolder");
printf("\n");
printf(command);
printf("\n");
system(command);
更新
这是我的完整代码,有人能做到这一点吗?
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <windows.h>
#include <Lmcons.h>
int main()
{
//getting current user
TCHAR username[UNLEN+1];
DWORD len = UNLEN+1;
GetUserName(username, &len);
printf(username);
printf("\n");
//making path variable
char path[100];
strcpy(path,"C:\\Users\\");
strcat(path,username);
strcat(path,"\\AppData\\Local\\Google\\Chrome\\*.*");
printf(path);
//listing dir
DIR *dfd = opendir(path);
struct dirent *dp;
if(dfd != NULL) {
while((dp = readdir(dfd)) != NULL)
printf("%s\n", dp->d_name);
closedir(dfd);
}
char command[100];
strcpy(command,"copy ");
strcat(command,path);
strcat(command," D:\\myFolder\\");
printf("\n");
printf(command);
printf("\n");
//sprintf(command, "copy %s/*.* D:/myfolder",path);
system(command);
return 0;
}
答案 0 :(得分:1)
您正在使用未初始化的数组。
更改
strcat(path,"C:\\Users\\");
strcat(command,"copy ");
要
strcpy(path,"C:\\Users\\");
strcpy(command,"copy ");