una ubicacion sistema seleccionar seguridad restaurar respaldo programas para instalados imagen hacer este equipo encuentra crear copia con como c copy system command escaping

ubicacion - la copia de sistema() falla, mientras que la copia de cmd funciona



seleccionar ubicacion de copia de seguridad del equipo para restaurar (2)

En cmd.exe, puedo ejecutar el comando "copy c: / hello.txt c: / hello2.txt" y funcionó bien. Pero en mi programa C, ejecuté este fragmento de código y obtuve el siguiente error:

#include <iostream> using namespace std; int main() { system("copy c:/hello.txt c:/hello2.txt"); system("pause"); return 0; }

Salida: el sistema no puede encontrar el archivo especificado.

¿Alguien sabe lo que está pasando aquí?


Alternativamente, todas las funciones de Windows son compatibles con las barras de estilo de Unix

system("copy c:/hello.txt c:/hello2.txt");

Algunas personas prefieren esto ya que es más fácil detectar un ''/' impar.
Pero podría confundir a los usuarios de Windows si muestra esta ruta en un mensaje.


Dentro de cadenas C (y bastantes otros lenguajes que usan las mismas reglas de escape), / debería ser // ya que es el carácter de escape. Le permite ingresar, en texto normal, caracteres no imprimibles tales como:

  • el carácter de tabulación /t .
  • el carácter de retorno de carro /r .
  • el carácter de nueva línea /n .
  • otros que no cubriré en detalle.

Como / se usa como el carácter de escape, necesitamos una forma de poner un ''/' real en una cadena. Esto se hace con la secuencia // .

Por lo tanto, tu línea debe ser:

system("copy c://hello.txt c://hello2.txt");

Esto a veces puede llevar a errores oscuros con comandos como:

FILE *fh = fopen ("c:/text.dat", "w");

donde /t es en realidad el carácter de tab y el archivo que intenta abrir es:

c : TAB e x t . d a t .