Domanda

In cmd.exe, posso eseguire il comando " copy c: \ hello.txt c: \ hello2.txt " e ha funzionato bene. Ma nel mio programma C, ho eseguito questo pezzo di codice e ho ricevuto il seguente errore:

#include <iostream>

using namespace std;

int main()
{
    system("copy c:\hello.txt c:\hello2.txt");
    system("pause");

    return 0;
}

Output: Il sistema non riesce a trovare il file specificato.

Qualcuno sa cosa sta succedendo qui?

È stato utile?

Soluzione

All'interno delle stringhe C (e alcune altre lingue che usano le stesse regole di escape), \ dovrebbe essere \\ poiché è il carattere di escape. Ti permette di inserire, nel testo normale, caratteri non stampabili come:

  • il carattere di tabulazione \ t .
  • il carattere di ritorno a capo \ r .
  • il carattere di nuova riga \ n .
  • altri che non tratterò in dettaglio.

Poiché \ viene utilizzato come carattere di escape, abbiamo bisogno di un modo per inserire un effettivo '\' in una stringa. Questo viene fatto con la sequenza \\ .

La tua linea dovrebbe quindi essere:

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

Questo a volte può portare a oscuri errori con comandi come:

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

dove \ t è in realtà il carattere tab e il file che stai tentando di aprire è:
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; c : TAB e x t . d a t .

Altri suggerimenti

In alternativa, tutte le funzioni di Windows supportano le barre in stile Unix

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

Alcune persone preferiscono questo poiché è più facile individuare un '\' strano.
Ma potrebbe confondere gli utenti di Windows se visualizzi questo percorso in un messaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top