Как я могу скопировать файлы каталога в другую папку?
Мне нужно скопировать файлы из одного каталога в другой, я нахожусь в той части, где я размещаю strtok в массивы, и это меня очень смущает. У меня 2562 файла для копирования. Я думаю, что мне нужен 2D массив, но я всегда получаю ошибки. Помогите...
#include<stdio.h>
#include<stdlib.h>
#include<dirent.h>
#include<sys/types.h>
#include<windows.h>
#include<string.h>
char** str_split(char* a_str, const char a_delim);
DIR *dir;
struct dirent *sd;
FILE *source, *target;
int main(){
char *token;
int ctr;
char pathsource[40];
char pathtarget[40];
strcpy(pathsource,"C:\\");
strcpy(pathtarget,"C:\\");
system("pause");
dir = opendir(pathsource);
if(dir){
while( (sd=readdir(dir)) != NULL ) {
token = strtok(sd->d_name,"\n");
printf("%s\n",token);
}
closedir(dir);
}
return 0;
}
кстати, я только что удалил немного из C:\ \ - это не настоящий код.
1 ответ
Если вы используете ОС Windows, вы можете использовать команду такой system("copy dir1\\*.txt dir2\\");
для которого параметр (командная строка) может быть построен, как вы хотите.
Например:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int main(void)
{
char comstart[] = "copy";
char pathsource[] = "D:\\testdir\\";
char copypattern[] = "*.*";
char pathtarget[] = "D:\\testdir2\\";
char * command;
// building command
command = (char*) malloc(strlen(comstart) + strlen(pathsource) + strlen(copypattern) + strlen(pathtarget) + 3);
if(!command)
{
printf("Unexpected error!\n");
return 1;
}
strcpy(command, comstart);
strcat(command, " ");
strcat(command, pathsource);
strcat(command, copypattern);
strcat(command, " ");
strcat(command, pathtarget);
// command execution
int res = 0;
res = system(command);
if( res == 0)
{
printf("Files copied successfully!\n");
}
else
{
printf("Unexpected error with code %d!\n", res);
}
return 0;
}
РЕДАКТИРОВАТЬ:
Или вы можете использовать более продвинутый подход с функциями Win API. Увидеть:
и другие