C应用程序无法正常工作

时间:2017-12-11 21:01:31

标签: c directory

int main(int argc, char** argv) {
    char directorio[99] = "E:\\Users\\Javier\\Documents\\Universidad", fichero[99] = "solucion_enero_12.pdf";
    char letras[99]="c*o.*";
    char copiar1[99]="E:\\Users\\Javier\\Documents\\Universidad\\Numero1";
    char copiar2[99]="E:\\Users\\Javier\\Documents\\Universidad\\Numero2";



    copiar(copiar1,copiar2);
    return (EXIT_SUCCESS);
}

void copiar(char *dir_orig,char *dir_dest){
    WIN32_FIND_DATA datos;
    HANDLE hFind;
    char destino[99];
    SetCurrentDirectory(dir_orig);
    hFind=FindFirstFile("*.*",&datos);
    if(hFind==INVALID_HANDLE_VALUE){
        printf("No encontrado\n ");
        exit(1);
            }
    if(!(datos.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
        sprintf(destino,"%s%s",&dir_dest, datos.cFileName);
        printf("%s\n",datos.cFileName);
        CopyFile(datos.cFileName,destino,FALSE);
    }

    while(FindNextFile(hFind,&datos))
    {
        if(!(datos.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
            sprintf(destino,"%s%s",&dir_dest,datos.cFileName);
            printf("%s\n",datos.cFileName);
            CopyFile(datos.cFileName,destino,FALSE);
        }
    }

}

函数copiar(,)应将第一个路径的文件夹内的所有内容复制到第二个文件夹中。但它只是复制文件本身并以奇怪的方式重命名它们。调试器甚至不工作。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

首先:

sprintf(destino,"%s%s",&dir_dest, datos.cFileName);

在dir_dest,之前不应该有&,并且在目录和文件名之间应该有一个路径分隔符

和紧随其后的一行:

printf("%s\n",datos.cFileName);

还应包含destino(请注意,这样做可能已经回答了您的问题/并解决了您的问题

答案 1 :(得分:0)

可能是因为只有当datos不是目录时才进行复制:

if(!(datos.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))