CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Afficher les fichiers du repertoire

Thicot
Thicot
Niveau 10
21 décembre 2005 à 12:19:20

Bon je vous explque plus en détail mon problème. Je suis en première année de DUT Informatique et j´ai un projet à rendre en C à la fin du semsestre (autant dire bientôt). Je travaille sous Linux.

Le projet consiste à faire une machine de Turing. Pour resituer le truc, il y a un ruban qui défile (normalement c´est des 1 et des 0 dessus mais nous on nous a demandé d´utiliser des B et des N à la place, bref...) et donc notre programme doit être capable de traduire d´autre programmes (en .tur) composé d´instructions élementairs (R, G, D, B, N pour Rien, Gauche, Droite, Ecrire B sur le Ruban, Ecrire N sur le Ruban)...

Jusque là ca va à peu près... Le truc c´est que notre programme doit proposer à l´utilisateur de creer ses propres programmes, de les modifier, voir de les supprimer et evidemment de les executer...

Ma question est donc : est est-ce qu´il existe une fonction quelquonque pour afficher la liste des fichiers en .tur du repertoire courant sans passer par un truc du style :

system("ls *.tur");

Merci d´avance...

dnob700
dnob700
Niveau 10
21 décembre 2005 à 12:38:15

C´est sûr que c´est possible. Souswindows il y a les fonctions nécessaire dans io.h, mais je crois que c´est un trucs particulier à VC++ (si non, tu peut jeter un coup d´oeil là : http://perso.numericable.fr/~fvirtman/info/tuto/I_3_01_io.cpp mais ça risque de ne pas marcher).

J´ai dans l´idée (mais ce´est qu´une hypothèse) que sous linux, si tu ouvre un répertoire comme un fichier tu peut lire dedans la liste des fichiers qu´il contient comme dans un fichier texte. Et donc écrire ton propre ls. La seule chose c´est que les fonctions à utiliser sont (je crois) opendire readdir et closedir au lieu de leur équivalent pour les fichier (par contre je ne sais pas comment elles fonctionnent).

Mais la solution la plus simple (je ne pense pas que ce soit la dessus que vous êtes noté) c´est de ne pas proposer cette option à l´utilisateur.

S´il vaut charger un .tur il le donne en paramètre au programme (donc tu lis la ligne de commande) et pour les enregistrer, tu demande le nom ce lequel il faut l´enregistrer.

Si tu peut éviter de te compliqué la vie pour de sprojets scolaires, tu a toujours plus de temps pour améliorer la partie réellement importantes de ton programme (je suppose que c´est l´exécution elle même).

Landreau_leboss
Landreau_leboss
Niveau 10
21 décembre 2005 à 12:50:30

oui, je pense aussi que c´est peut être pas le plus important...
Je regardais les différentes fonctions que tu m´as donné. Et puis si j´ai le temps je m´en servirais.

Merci.

Autre chose. J´ai eu qu´un cours sur les fichiers pour l´instants, donc j´ai bien capté les différentes fonctions pour lire, fermer, chercher des caractères, les rentrer dedans mais mon programme doit permettre à l´utilisateur de modifier ses programmes.
Or avec ce que j´ai vu jusqu´à présent, quand on modifier notre fichier, on rajoute les choses à la fin et je ne vois pas comment pouvoir modifier le programme à une ligne prise au hasard.

Donc en gros est-ce qu´on peut (avec un niveau de C encore très bas, je le concois ^^) ouvrir un fichier avec un editeur de texte dans mon programme... en évitant encore de passer par un truc du style system("gedit fichier.tur &"); parce que sinon je sens que mon prof il va criser s´il voit des trucs comme ca :p

Merci encore pour le coup de main...

godrik
godrik
Niveau 30
21 décembre 2005 à 13:38:50

le plus simple est encore de réecrire tout le fichier.

Pour readdir, un bout de code extrait de mon serveur FTP:

void lsPrint (DIR* dir, int sort)
{
struct dirent* ligne;
while ((ligne = readdir(dir)))
{
write (sort, ligne->d_name, strlen(ligne->d_name));
write (sort, "\r\n", 2);
}
}

dnob700
dnob700
Niveau 10
21 décembre 2005 à 15:41:56

comme dit godrik : même si tu peut ouvrir un fichier en lecture écriture fopen(...,"r+"); le plus simple c´est de le charger en entier, l´utilisateur modifie ce que tu veux, puis tu le réécris ("w") en effacant ce qu´il y avait auparavant.

novembre
novembre
Niveau 18
21 décembre 2005 à 21:29:28

Je me rapelle qu´il existe une fonction qui fait ca mais j´arrive pas du tout à mettre la main dessus. c´est une fonction qui renvoir un char***. et pour qu´elle soit dans l´ordre fallait utiliser un qsort dessus.
Bon euh ... pas été trop utile mais si jamais je retrouve je poste ici.

JeanYvesYves
JeanYvesYves
Niveau 10
21 décembre 2005 à 21:47:59

Il me semble que ça fonctionne a peu pres pareil sous Linux :
les fonctions sont :

findfirst, et findnext

Ce sont les fonctions utilisées dans io.h sous Windows (a un underscore pres), mais il me semble que c´est a peu pres la meme chose

Fait un "man findfirst" sous ta console de Nunux, et dis moi si tu trouves ton bonheur :-)

PS : je n´aime pas les machines de Turing, berk ! En fait, ce que je n´aimais pas, c´était la prof qui faisait du théorique la dessus...

godrik
godrik
Niveau 30
22 décembre 2005 à 11:19:28

(reponse au PS: pourquoi elle etait moche ?
nan mais si tu n´aimes pas les machines de turing, c´est parceque tu n´es pas un homme un vrai! 212000 :) pour faire passer cette vanne nulle! :) )

Les primitives posix (donc celles de nux) c´est opendir et readdir qui fonctionne approximativement pareil!

Ca me fait penser... j´avais fait un interpreteur BrainFuck en Java. Ca ressemble asez a une TM

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment