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 :

Boucle avec strchr


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Par défaut Boucle avec strchr
    Bonjour,
    Je suis en ce moment en train de coder un programme utilisant des noms et des répertoires de fichier tel que : /home/quelquechose/fichier
    cependant je suis confronté a un probléme car ceci "/home/quelquechose/fichier" est enregistrer dans une variable aprés une saisir de charactére, je ne connais donc pas sa taille et je voudrais supprimer la partie /home/quelquechose/ dont tout supprimer jusqu'au dernier "/".
    J'ai donc fait une boucle, la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            while (strchr(fichier, '/') != NULL)
            {
                fichier[n] = fichier[n+1];
                n+1;
            }
    Hélas je reste bloqué dans une boucle infinie. Suite a mes recherche j'ai donc décider de faire part de mon probléme sur ce forum.

    Merci d'avance pour vos réponses.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Salut,

    Si tu ne souhaites pas tout recoder, il te suffit surement d'utiliser la fonction basename() : http://man7.org/linux/man-pages/man3/basename.3.html

    Pour comprendre ton problème, essaye d'afficher ta chaine à chaque itération, regarde si cela fait ce que tu penses.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Premièrement, l'instruction n+1; ne modifie pas n, ca calcule n+1, et n'en fait rien.
    Il faut utiliser ++n;, n++;, n+=1; ou encore n = n+1;Par ailleurs, tu fais systématiquement la recherche à partir du début de la chaine, alors qu'il faudrait avancer dedans.

    Avec les deux changements, ca donnerait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            while (strchr(fichier+n, '/') != NULL)
            {
                fichier[n] = fichier[n+1];
                ++n;
            }
    Par contre, je ne connais pas la logique de ton code, donc je ne sais pas si la deuxième correction s'applique.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Par défaut
    Merci leternel, je comprends mieux les erreurs de mon code. Cependant je ne l'ai pas utilisé car j'ai utilisé basename(). Merci Bktero, ça a l'air de fonctionner.

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

Discussions similaires

  1. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  2. Boucle avec un TIBDataSet
    Par SebCBien dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/09/2004, 17h33
  3. Réponses: 12
    Dernier message: 14/06/2004, 13h06
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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