2017-02-26 6 views
0

J'apprends la programmation en C donc je suis totalement débutant. J'utilise Code :: Blocks 12.11 sur Mac, j'ai Xcode et j'ai téléchargé les paquets de ligne de commande pour que tout semble faire ce que je veux. Mon problème est lorsque j'ouvre un fichier .txt il n'apparaît pas dans le répertoire avec le code source et d'autres fichiers, je l'ai trouvé dans le dossier Tous mes fichiers dans le Finder.Comment définir le répertoire de travail sur Code :: Blocks sur Mac?

Je crée des projets en suivant les étapes suivantes> Fichier> Nouveau> Projet> Application console> Puis nommer le projet et l'enregistrer dans un fichier que j'ai créé pour tous mes programmes.

Tous mes projets précédents sont enregistrés dans des dossiers nets dans ce répertoire à l'exception du fichier .txt.

Ceci est mon code.

/** 

Automatic Control and Systems Engineering126 - Problem Sheet 2.Q2 
Project: Opening a Text File for Writting 
Author: Craig McAllister 
Date: 23.02.17 

**/ 

#include <stdio.h> 

main() 
{ 
     FILE *myFile; 
     myFile=fopen("first.txt","w"); // open first.txt for writing (or create it if it doesn't exist) - this will be in the same folder as the c program 
     fprintf(myFile,"Hello World!!!\n"); 
     fclose(myFile); 
} 

Je lis sur une autre question similaire que si je lui donne un chemin direct, il fonctionne et il a, dans une certaine mesure;

myFile=fopen("/Users/craigmcallister/Documents/CodeBlocks/First_Text/first.txt","w");

cette ligne de code enregistre le fichier txt dans le même fichier de projet qui contient mon code source qui est un pas de plus vers la solution que je veux.

Je voudrais que les fichiers .txt soient automatiquement sauvegardés dans le répertoire de travail, le reste du projet est sauvegardé et dans ce cas le fichier .txt s'ouvre automatiquement (si c'est possible)?

Je suppose que mon répertoire de travail n'est pas configuré correctement, mais comme je suis très nouveau à ce sujet, je n'ai aucune idée de ce que cela ressemblerait ou comment je voudrais changer les paramètres.

Si un magicien/assistant peut aider à mettre un terme à cette douleur que je serais éternellement reconnaissant :)

Répondre

1

Si vous ne spécifiez pas absolute path, fopen() va ouvrir/créer des fichiers par rapport à la working directory actuelle.

Il ressemble à dans Code :: Blocks, le répertoire de travail par défaut n'est pas le répertoire du projet. Une recherche rapide dans les forums Code :: Blocks semble indiquer que le répertoire de travail est par défaut le répertoire personnel de l'utilisateur sur macOS.

Il semble que vous pouvez définir le répertoire de travail utilisé pour exécuter votre programme dans Projet> Propriétés> Générer la cible> Répertoire de travail d'exécution. Si vous définissez cela dans le répertoire où se trouvent vos fichiers sources, votre fichier doit également être créé dans ce répertoire.

+0

Merci pour votre réponse :) Oui, en spécifiant un chemin absolu est la façon dont j'ai contourné le problème pour le moment. J'ai essayé ces étapes plusieurs fois hier sans succès, voici les étapes que j'ai suivies; project> Propriétés> Cibles de construction> (où se trouve le répertoire de travail d'exécution) La zone Répertoire de travail d'exécution est remplie avec juste un point "." Je clique sur la boîte d'options pour le répertoire de travail d'exécution et je peux accéder au répertoire de mon projet, mais je n'arrive pas à enregistrer quelque chose ici, je suppose que je fais quelque chose de mal, dois-je créer un nouveau dossier? – 8TrackRobot

+0

Pouvez-vous modifier le contenu de la boîte? Si c'est le cas, essayez d'y entrer le chemin absolu de votre répertoire de projet. Si ce n'est pas éditable, essayez d'éditer le [fichier de projet] (http://wiki.codeblocks.org/index.php?title=Project_file#Working_directory) directement. Et si tout cela ne vous aide pas, essayez [cette solution de contournement] (http://forums.codeblocks.org/index.php?topic=10328.0) sur le forum. Si tout échoue, vous pouvez utiliser 'chdir()' (besoin de '#include ') pour changer le répertoire de travail avant de faire quoi que ce soit d'autre dans votre programme, mais ce serait vraiment un hack pour exécuter dans votre programme le code :: Blocs IDE. – puzzle