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 :

chercher un caractere dans une chaîne avec les pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Par défaut chercher un caractere dans une chaîne avec les pointeurs
    Bonjour, ça marche pas.
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int c(char *s, char *c){
        while(*s){
     
            if (s==c){return 1;}
            else {return 0;}
     
        }
    }
     
    int main()
    {
        printf("%d",c("pikachu", 'i'));
        return 0;
    }

  2. #2
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Hello,
    Ce serait sympa que tu prennes deux minutes pour expliquer le problème: qu'est-ce que tu veux faire, qu'est-ce que tu as obtenu. Et c'est pareil pour tes autres posts, d'ailleurs. Sinon, tout ce que tu obtiendras seront des réponses aussi brèves que tes questions. On n'est pas là pour faire tes exos à ta place.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    Je plussoie nnovic, tu ne fournis pas assez de détails.

    Néanmoins, il y a plusieurs soucis avec ton code :
    La fonction et un de ses paramètres s'appelle c. Il y a risque de les confondre, et le compilateur devrait d’ailleurs t'en avertir. Tu devrais les nommer de façon plus explicite.
    La fonction cherche un caractère dans une chaîne, sa signature devrait être int search(char const *string, char c).
    La fonction retourne un booleen (vrai/faux) ou une position ? Dans le premier cas tu devrais utiliser #include <stdbool.h> et utiliser les constantes true / false pour plus de clarté.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Il y a trois problèmes majeurs:
    1) tu n'incrémentes pas s: si tu veux parcourir la chaîne 's', il faudrait un ++s à la fin de ta boucle
    2) tu compares l'adresse des pointeurs plutôt que de comparer le caractère sur lequel ils pointent: *s == *c plutôt s == c
    3) tu demandes un pointeur sur char pour le deuxième argument mais tu appelles la fonction avec un char, pas un pointeur sur char

    Mais je suis d'accord qu'il vaudrait mieux changer la signature et prendre un char en valeur plutôt que son adresse...

  5. #5
    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
    Et surtout, on ne retourne pas de manière systématique dès le premier pas de boucle.
    le return faux est à mettre après la boucle.

Discussions similaires

  1. Comment ajouter une chaîne dans une liste avec les API Windows ?
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 02/02/2013, 13h47
  2. comment mettre une image dans une liste avec les values ?
    Par Ekimasu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2007, 17h51
  3. Réponses: 1
    Dernier message: 30/11/2006, 17h49
  4. [Sql Server 8.0]Requête dans une chaîne avec Cursor à executer
    Par Nicodemus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/11/2006, 17h34
  5. [MySQL] Chercher des info dans une DB, et les afficher en lien
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2005, 19h29

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