2010-09-22 18 views
2

J'essaie d'analyser un fichier txt et je veux le référencer par rapport à mon emplacement actuel du répertoire. Si je mets le chemin du fichier complètement cela fonctionnera mais j'essaye d'utiliser .. \ src \ test.txt il ne le trouvera pas. N'est-ce pas la bonne façon de référencer un fichier par rapport à un seul répertoire?Comment ouvrir un fichier C avec un chemin relatif?

Toute aide serait appréciée

+0

Afficher le code dans lequel vous ouvrez ce fichier. – nos

Répondre

10

Si vous mettez « .. \ src \ test.txt » dans une chaîne constante, vous devez tous les antislashs de sorte que « \ t » et « \ s » sont pas interprété comme des séquences d'échappement. (Ou vous pouvez utiliser des barres obliques à la place, ce qui est plus portable.)

3

Cela dépend de la configuration du répertoire de travail actuel. Par défaut, il s'agit du répertoire dans lequel se trouve l'exécutable si vous double-cliquez sur l'application depuis l'Explorateur ou sur le chemin actuel dans lequel se trouve le shell s'il a été démarré à partir d'une invite de commande. Si test.txt est dans c: \ code \ app \ src et que votre application est dans c: \ code \ app, le chemin relatif ".. \ src \ test.txt" va finir par c: \ code \ src \ test.txt (si lancé depuis l'explorateur).

Essayez d'imprimer la sortie de _getcwd avant d'essayer d'ouvrir le fichier pour vérifier quel répertoire est le répertoire de travail actuel.

0

En supposant que la structure de votre répertoire ressemble:

 
project 
+---src 
|  test.txt 
|  proj.c 
\---bin 
     a.out <- Working directory 

votre chemin relatif est correct; votre répertoire de travail est en fait au même niveau que le fichier texte.

Si vous voulez vraiment dire que le dossier est un répertoire que vous avez déclaré, comme ceci: (Note: Ceci est une structure de projet maladroit)

 
project 
\---src 
    | test.txt 
    | proj.c 
    \---bin 
      a.out 

ou comme ceci: (plus de sens)

 
project 
| test.txt 
+---src 
|  proj.c 
\---bin 
     a.out 

Ensuite, le chemin que vous avez besoin est "../test.txt" ou, ce qui revient, "../../project/test.txt"

un meilleur emplacement serait dans un répertoire de données, de sorte que votre chemin serait "../data/test.txt"

+0

Blech! Pourquoi mes tags ne fonctionnent pas correctement? –

0

Je suppose que cela est une fenêtre VS VBUILD (étant donné l'arrière chemin tailladé)

VS aura mis le binaire dans quelque chose comme projet \ bin \ debug. Et lorsque vous l'exécutez dans VS, il va définir le WD actuel à l'emplacement du binaire.

si

a) copier le fichier au bon endroit

b) modifier la configuration des propriétés du projet de débogage à-dire définir le chemin actuel à l'endroit où vous vous attendez que le fichier soit (relativement)