listes chainées - C - Programmation
Marsh Posté le 27-12-2013 à 17:38:01
Bonjour,
D'abord je pense qu'il va falloir apprendre à indenter le code parce que là
c'est difficile à lire.
À mon avis le gros problème vient de l'utilisation de scanf. Scanf est une
fonction qui sert à lire des données formattées et n'est donc pas applicable
pour une saisie au clavier puisqu'un utilisateur ne respecte jamais le format
voulu. Sa "simplicité" apparente fait que tout le monde l'enseigne et c'est
ainsi qu'on prend de mauvaises habitudes.
Pour la remplacer on utilise fgets:
char *fgets(char *s, int size, FILE *stream);
Cette fonction permet de récupérer une chaîne de caractères. Pour récupérer un
nombre il faut la convertir avec strtol:
long int strtol(const char *nptr, char **endptr, int base);
C'est un peu plus compliqué je l'admet mais cela évite de faire des erreurs. La
fonction création utilisera donc les fonctions ainsi:
Code :
|
En remplaçant tous les scanf, cela devrait déjà plus ressembler à quelque chose.
La fonction affichage ne peut pas fonctionner si le répertoire affiché est le
premier de la liste car la variable r n'est pas initialisée (on quitte la boucle
avant l'affectation). Il manquait aussi un ; à la fin de la boucle for pour la
faire tourner "dans le vide".
Code :
|
Attention de ne pas oublier les \n à la fin d'un printf. C'est plus pratique
pour lire mais cela permet aussi de s'assurer que le terminal affiche bien ce
que l'on veut, sinon il risque de garder les caractères en buffer en attendant
une hypothétique suite.
Edit: en validant mon message, toutes les tabulations sont passées à la
trappe donc le pb vient peut-être du forum et non de l'indentation.
Marsh Posté le 26-12-2013 à 20:19:39
bonjour à tous,
svp voici mon code qui crée des repertoires:un repertoire doit contenir au max deux sous-repertoires et des fichiers l'affichage ne marche pas .je vois pas ou est le probleme :