Parcourir les répertoires - Renommer et Supprimer les fichiers

Supafresh Messages postés 40 Date d'inscription samedi 1 février 2014 Statut Membre Dernière intervention 7 août 2014 - 2 févr. 2014 à 16:30
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 3 févr. 2014 à 11:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100394-parcourir-les-repertoires-renommer-et-supprimer-les-fichiers

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
3 févr. 2014 à 11:58
salut, je ne vais pas remuer le couteau vu que certaines choses ont été écrites, mais simplement tu as une boucle :

while(strcmp(choix, "fin") != 0)
    {


mais le seul moment ou tu donne des infos de chaines c'est lors du parcours. à mon avis il sera plus interessant de faire un
do{

}while( ... )

du fait que dans tous les cas il y a un premier passage (ne serai-ce que pour le menu), et donc on évite une instruction de test inutile, et de même retirer les exit comme ca a été indiqué, et tester "chx == 5" dans le while ( => et donc plutot que faire
strcmp(choix, "fin")
tu met simplement chx à 5 pour sortir de la boucle).

Enfin bon ton code fait ce qu'il doit faire, certe, mais semble encore un peu brouillon (c'est aussi le but ici, apprendre et donner des infos ;] )

bon dev.
naga
Supafresh Messages postés 40 Date d'inscription samedi 1 février 2014 Statut Membre Dernière intervention 7 août 2014 3
Modifié par Supafresh le 2/02/2014 à 22:14
1-Désolé mais je n'ai pas compris, pourrais tu expliquer clairement ce que tu veux dire.
2-Ce programme ne fonctionne pas sous Windows je l'ai déjà dis je crois et il ne cherche pas à être performant de plus il ne fait que quelque lignes, de la à parler d'exes énormes et contre performants c'est exagérer non ?
3- Je crois qu'il n'y a pas de grande différence entre les fonctions POSIX et Windows de 'dirent.h' à part le fait qu'il faut rajouter 'sys/types.h' sous Linux. Mes sources viennent de forums dont je n'ai plus les liens ( désolé ).
Si je me trompe dites le moi.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 févr. 2014 à 19:39
Salut,

Je n'ai aucun avis sur ton utilisation de la CRT pour l'accès aux fichiers, cptpingu sait nettement mieux que moi ce qu'il y a à en dire vu que je n'utilise jamais.

Par contre sous Windows je peux affirmer que tout ceci n'a rien à y faire si ce n'est produire des EXEs énormes et contre performants.

Bonne continuation.
Supafresh Messages postés 40 Date d'inscription samedi 1 février 2014 Statut Membre Dernière intervention 7 août 2014 3
2 févr. 2014 à 17:45
J'ai l'habitude de découper mes programmes quand je fais du réseau ou quand j'utilise des tas de fonctions. Mais pour ton plaisir et celui des débutants je le découperais la prochaine fois que je programmerais en C. Merci pour ta critique, je verrais ce qui ce passe sous Windows.
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
2 févr. 2014 à 17:02
Bonjour.

Le programme fait ce qui est décris, pas de souci là dessus. Petite remarque: Vu que tu utilises des fonctions POSIX, ce n'est pas seulement compatible Linux, mais aussi compatible avec ceux qui implémentent les fonctions POSIX (*BSD, MAC, et je crois même que Windows l'implémentent partiellement).

Trois choses tout de même, qui m'interpellent:
- Pourquoi faire un sleep avant tes exits ? L'utilisateur est inutilement obligé d'attendre en cas d'erreur. Je ne vois aucun aspect positif à faire cela (c'est au contraire très embêtant).
- L'utilisation à outrance des exits (beurk). On préfère généralement remonter les erreurs proprement à coup de "return", plutôt que d'arrêter abruptement le programme. Ici, comme tu es dans le main, de toute façon, un return et un exit auront le même effet (ce qui est moins gênant). D'une manière générale, on utilise rarement un exit (et quand on le fait c'est indirectement via "assert"). Il faut toujours remonter les erreurs, et éviter d'interrompre un code n'importe où, au risque de se retrouver avec un code "spaghetti".
- La fonction monolithique est bien horrible. Un code bien fait et bien pensé, est découpé en petites fonctions. En C, en générale, on dépasse rarement une trentaine de lignes. Même si le code n'est pas long, c'est dommage de faire un bon exemple sur le fond, mais qui n'est pas terrible sur la forme. Vu que ce sont essentiellement des débutants qui vont lire ce code, les habituer à un découpage propre est plus pédagogique.
Rejoignez-nous