Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde.
Estou fazendo um interpretador de comandos em C mas estou com dificuldades na separação dos parâmetros do comando para poder fazer a copia do arquivo.
O comando de entrada será: "-copiar origem destino"
O comando é enviado inteiro para uma função responsável por efetuar a copia do arquivo, nessa função é feita a separação dos parâmetros usando a função strtok(), porem só encontrei exemplos que usam o espaço " " no strtok() para fazer essa separação mas se o caminho do arquivo tiver espaço ex "C:\\Nova pata\\teste.txt", esse esquema já não da certo.
Por favor me deem uma luz nessa situação.
Essa a função pra copiar arquivos:
//-----------------------------Função para copiar arquivos-----------------------------------------------
int comando_copiar(int d, char comando_comp[100])
{
//O comando_comp corresponde ao comando completo digitado pelo usuario "-copiar origem destino"
//A variavel d serve para saber se o comando foi para copiar "d=0" ou para mover "d=1" o arquivo.
int ch, status, x;
char *psretorno, *arq_origem, *arq_destino;
x = 1;
psretorno = strtok(comando_comp," ");
FILE *origem, *destino;
do
{
psretorno = strtok(NULL, " ");
if(x == 1)
{
arq_origem = psretorno;
}
if(x == 2)
{
arq_destino = psretorno;
}
x++;
}while(psretorno != NULL && x < 3);
origem = fopen(arq_origem,"rb");
if (origem == NULL) printf("\n Nao foi possivel abrir o arquivo de origem!\n");
exit(EXIT_FAILURE);
}
destino = fopen(arq_destino,"wb");
if (destino == NULL) fclose(origem);
printf("\n Nao foi possivel abrir o arquivo de destino!\n");
exit(EXIT_FAILURE);
}
while ((ch = fgetc(origem)) != EOF )
{
fputc(ch, destino);
}
printf("\nArquivo copiado com sucesso!\n");
fclose(origem);
fclose(destino);
fflush(stdin);
//Se receber 1 na variavel d, vai copiar e excluir o arquivo (Uma maneira de fazer o comando "mover"
if (d == 1)
{
//printf("\nTeste %s\n",arq_origem);
status = remove(arq_origem);
} printf("\nErro ao mover o arquivo\n");
}
return;
}Carregando comentários...