IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Indentation de fichier !


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 17
    Points
    17
    Par défaut Indentation de fichier !
    Bonjour à tous !

    Je dois encore une fois ré-inventer la roue dans un de mes tp d’informatique. Je suis plus un mec de réseau, mais le C est présent dans Unix et Linux que j’ai décidé de prendre un cours de C.

    Je dois faire un programme qui fait du formatage de base. A vrai dire je dois formater d’autres fichiers écris en C.

    A chaque fonction, je dois ajouter une tabulation aux lignes après le { et enlever une tabulation aux lignes après un } jusqu’à ce que je rencontre une autre. Pas de verification de saut de ligne. Seulement d’indentation.

    monProgramme.c < fichierNature.c > FichierFormaté.c

    Ce que j’ai pensé, c’est de mettre une ligne la fois dans un array incluant le retour de chariot et les espaces et ensuite imprimer cette ligne dans un fichier.

    Si je détecte un commentaire j’arrête la et j’imprime le commentaire. Si je détecte un { ou un } (ils doivent etre seuls sur leur ligne, car s’il ne sont pas seul je ne fais rien, car il se peut qu’il y ait des printf(“{}{}{}{}{}}{}{}}lllololol”)….j’ajoute ou enleve une tabulation aux lignes concernes.

    Je ne sais pas trop ou commencer, il semble avoir des millions de facons de lire un fichier et de l’ananlyser. La taille de la ligne ni du fichier ne doit pas etre un facteur. Il me semble qu'il y ait plein de genre de scanner ou de fonctions d'analyse de texte, mais la quelle utiliser pour un débutant.

    Je trouve cela vraiment intense pour un premier devoir en C.

    Exemple

    FichierNature
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void bonjour
    {
    Hello;
    }
     
       void bonjour1
           {
    Hello; 
     
    }
     
    void bonjour 2
    {
        Hello ;
    }
    Fichier formaté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    void bonjour
    {
        Hello;
    }
     
    void bonjour1
    {
        Hello;
    }
     
    void bonjour 2
    {
        Hello ;
    }

  2. #2
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 625
    Points : 1 559
    Points
    1 559
    Par défaut
    Hello,

    Je crois que le plus simple est d'avoir un compteur, que tu incrémentes à chaque {, et que tu décrémentes à chaque }. Et suivant la valeur du compteur, tu génères compteur tab en début de ligne avant de mettre la ligne lue (dont tu as supprimé les tab et les espaces avant le 1er caractère valide) dans ton fichier destination.

    Pour les commentaires, c'est simple: ne pas (dé)compter les {} derrière un // ou entre /* et */

    Pour les littéraux, idem, ne pas toucher au compteur entre deux " ou deux ' (reste le problème du \" ou \', qui n'est pas compliqué à gérer)

    Enfin, je n'ai pas trop réfléchi aux i/o, mais je crois que je lirais le fichier ligne par ligne.
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par metraon Voir le message
    Je ne sais pas trop ou commencer, il semble avoir des millions de facons de lire un fichier et de l’ananlyser. La taille de la ligne ni du fichier ne doit pas etre un facteur. Il me semble qu'il y ait plein de genre de scanner ou de fonctions d'analyse de texte, mais la quelle utiliser pour un débutant.
    Salut, il existe plusieurs moyens de lire le contenu d'un fichier effectivement, mais pas des millions

    Je pense que le plus simple pour toi serait d'utiliser fgets();
    Ainsi pour faire ton algo il te suffit de garder à chaque fois une sauvegarde de l'indentation à effectuer (soit 0 tab, soit 1 tab, soit plusieurs...) et de vérifier sur (par exemple) Result[0] (chaine renvoyée par fgets() si il y a une tabulation et s'il en faut une, puis effectuer l'action correspondante à tes besoins, cad écrire une tab, l'enlever, ou ne rien faire.

    Je te conseille la lecture du man 3 fgets pour en savoir plus là dessus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Indentation du fichier XML généré par windev
    Par kariel dans le forum WinDev
    Réponses: 22
    Dernier message: 17/12/2014, 13h14
  2. [DOM] Créer un fichier XML indenté
    Par phoebe dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 06/10/2009, 23h31
  3. [FAQ]Comment indenter un fichier XML
    Par SfJ5Rpw8 dans le forum Vos Contributions VBScript
    Réponses: 4
    Dernier message: 23/10/2008, 11h04
  4. Réponses: 3
    Dernier message: 17/07/2006, 08h29
  5. Parcourir fichier à indenter
    Par BFH dans le forum C
    Réponses: 6
    Dernier message: 26/11/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo