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 :

Positionnement des fichiers en C


Sujet :

C

  1. #21
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Plus simple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     /* On détermine d'abord la racine commune */
    p = ch2 ; 
    p1 = ch1 ;
    l = 0 ;
    while ( (p != NULL) && (p1 !=  NULL)  && (*p == *p1) )
       {
           racine[l] = *p ;
           p++ , p1++ ;
           if (*p=='/') l=p;
       }
    racine[l] = '\0' ;
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #22
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    oui, à condition de le mettre avant l'incrémentation et de faire la différence :

    au lieu de :

    il me semble que ce serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     /* On détermine d'abord la racine commune */
    p = ch2 ; 
    p1 = ch1 ;
    p2 = racine ;
    l = 0 ;
    while ( (p != NULL) && (p1 !=  NULL)  && (*p == *p1) )
       {
           *p2 = *p ;
           if (*p=='/') l=p-ch2+1;
           p++ , p1++, p2++ ;
       }
    racine[l] = '\0' ;
    ce qu'on pourrait traduire par :

    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
    17
    18
    int Find_CommonRoot ( char *Filename1, 
                          char *Filename2, 
                          char Separator, 
                          char *Root )
    {
       int   l = 0 ;
       char *Start = Filename1, *pRoot=Root ;
     
      while ( (Filename1 != NULL) && (Filename2 !=  NULL)  && (*Filename1 == *Filename2) )
       {
           *pRoot = *Filename1 ;
           if ( *Filename1 == Separator ) l = Filename1 - Start + 1;
           Filename1++ , Filenamé2++, pRoot++ ;
       }
     
      Root[l] = '\0' ;
      return l ;
    }


    [EDIT]

    Ton raccourci ne fonctionnera pas à cause du "l" dans la fabrication de la racine.
    J'ai modifié pour séparer la fabrication de la racine du calcul de l

    [/EDIT]

  3. #23
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    avec la fonction complémentaire :


    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
    17
    18
    void Transform_Into_RelativePath ( char *Filename, char *Root, char Separator )
    {
      int   l = strlen(Root), l1 ;
      char *p ;
     
      if ( (p = strstr (Filename, Root)) != NULL )
      {
           l1 = strlen(Filename) - l  + 1 ;
     
           memmove ( &(Filename[3]), &(Filename[l]), l1) ;
     
           Filename[l1+3] = '\0' ;
     
           Filename[0] = '.' ;
           Filename[1] = '.' ;
           Filename[2] = Separator ;
      }  
    }

  4. #24
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    2 remarques fnales (la nuit a porté conseil )



+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. positionnement des informations dans un fichier txt
    Par moustaf_26 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 23/03/2012, 20h20
  2. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  3. Réponses: 3
    Dernier message: 25/07/2002, 10h42
  4. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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