Question

Dans cmd.exe, je peux exécuter la commande & copy; copier c: \ hello.txt c: \ hello2.txt " et cela a bien fonctionné. Mais dans mon programme C, j'ai exécuté ce morceau de code et j'ai obtenu l'erreur suivante:

#include <iostream>

using namespace std;

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

    return 0;
}

Sortie: Le système ne trouve pas le fichier spécifié.

Quelqu'un sait ce qui se passe ici?

Était-ce utile?

La solution

Dans les chaînes C (et quelques autres langues qui utilisent les mêmes règles d'échappement), \ doit être \\ puisqu'il s'agit du caractère d'échappement. Il vous permet de saisir, en texte normal, des caractères non imprimables tels que:

  • le caractère de tabulation \ t .
  • le caractère de retour chariot \ r .
  • le caractère de nouvelle ligne \ n .
  • d’autres que je ne traiterai pas en détail.

Puisque \ est utilisé comme caractère d'échappement, nous avons besoin d'un moyen de mettre un effectif '\' dans une chaîne. Ceci est fait avec la séquence \\ .

Votre ligne doit donc être:

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

Cela peut parfois conduire à masquer des erreurs avec des commandes telles que:

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

\ t est en fait le caractère onglet et le fichier que vous essayez d'ouvrir est: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; e x t . d a t .

Autres conseils

Toutes les fonctions Windows prennent également en charge les barres obliques de style Unix

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

Certaines personnes préfèrent cela, car il est plus facile de repérer un '\' étrange.
Toutefois, les utilisateurs de Windows risquent d’être déroutés si vous affichez ce chemin dans un message.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top