2017-07-20 1 views
-2

J'essaie de créer un fichier avec du texte qui doit aller dans un dossier spécifique. Cependant, il est créé mais dans le même dossier que l'exe. Voici le code:C++ Ofstream ne crée pas de fichier à un emplacement spécifique

const char* name; 
char path[200]; 

int main() 
{ 
    cin.getline(path, 230,'\n'); 

    DIR *dir; 
    name = path; 
    struct dirent *ent; 

    if ((dir = opendir(name)) != NULL) 
    { 
     while ((ent = readdir(dir)) != NULL) 
     { 
      ofstream file(path, ios::out | ios::trunc); 
      file.open("somename"); 
      file << ent->d_name + " something"; 
      file.close(); 
     } 

     closedir(dir); 
    } 
    else 
    { 
     perror(""); 
    } 
} 

Qu'est-ce qui ne va pas?

+0

'file.open ("un nom")' va créer le fichier dans le répertoire de travail courant, sans chemin spécifique donnée FIE. – user0042

+0

S'il vous plaît, pensez à ajouter le resp. inclut au début de votre source. Les inclusions nécessaires pour les fonctions de bibliothèque sont généralement mentionnées sur la page de manuel de la fonction elle-même. (Ils sont manquants dans votre [MCVE] (http://stackoverflow.com/help/mcve), espérons pas dans votre "vrai" programme.) – Scheff

+0

Si vous voulez enregistrer un fichier dans un répertoire spécifique, fournissez le resp . chemin d'accès relatif ou absolu (avec des répertoires) ou modifiez le répertoire en cours avant. Vous pouvez le faire dans votre programme en utilisant ['chdir()'] (http://man7.org/linux/man-pages/man2/chdir.2.html). – Scheff

Répondre

0

utilisez \\ pour distinguer un répertoire d'un autre ou un fichier du répertoire.

Exemple:

ofstream file("D:\\NewFolder1\\NewForlder2\\NewFolder3\\FileName.txt", ios::out | ios::trunc); 
file.open("D:\\NewFolder1\\NewForlder2\\NewFolder3\\FileName.txt");