Je crée un jeu qui charge ses données à partir de fichiers externes (fichiers .txt). Lorsque je déclare et définit *fp
à la fonction fopen()
, en lui donnant le répertoire du fichier, cela fonctionne bien, bien sûr. Mais voici le problème: Quand je veux envoyer mon programme à un autre ordinateur ou répertoire, le répertoire change, et donc le jeu ne peut pas charger ses données à partir des fichiers. J'ai besoin d'un moyen pour que le programme recherche le nom de tous les fichiers et les ouvre n'importe où le dossier du programme est.C - Comment créer un programme qui trouve les noms des fichiers auxquels il a accès?
-4
A
Répondre
0
Ceci est spécifique au système d'exploitation. sur linux vous pouvez utiliser la commande shell locate
et analyser sa sortie (http://www.linfo.org/locate.html)
C: Run a System Command and Get Output?
How do I execute a Shell built-in command with a C function?
mais cette solution ne fonctionne que sur Linux. je pense que yano la solution dans les commentaires ci-dessus est meilleure ...
La solution la plus simple pour moi est de distribuer simplement les fichiers nécessaires avec votre exécutable. Zip/tar up le répertoire de niveau supérieur avec tous les fichiers de support dans cette hiérarchie, ou bien le script user/install définit un type de variable d'environnement qui pointe vers les fichiers. Aucun programme ne va chercher dans le système de fichiers les fichiers dont ils ont besoin. Ils savent où ils se trouvent. – yano
La norme C99 ne connaît pas les répertoires. Mais POSIX fait. Votre question est spécifique au système d'exploitation. Vous pourriez vouloir [readdir (3)] (http://man7.org/linux/man-pages/man3/readdir.3.html), [nftw (3)] (http://man7.org/linux/ man-pages/man3/nftw.3.html), [stat (2)] (http://man7.org/linux/man-pages/man2/stat.2.html) –
Ce que vous décrivez a besoin de savoir les normes d'installation du logiciel sur le système d'exploitation cible. Cela varie beaucoup d'un OS à l'autre. –