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 :

j'aimerais comprendre le if !memcpy


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 0
    Points
    0
    Par défaut j'aimerais comprendre le if !memcpy
    le code ci-joint supprime de la chaine ligne la chaine w1.
    ma question est à quoi sert le test : if(!memcpy(s+i,w1,strlen(w1))) et merci

    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
    19
    20
    21
    22
    23
    24
    #include <stdio.h>
    #include <string.h>
    
    void supp_seq(char *s,char *w1){
        int n1 = strlen(w1);
        for(int i=0;i<=strlen(s)-1;i++)
            if(!memcpy(s+i,w1,strlen(w1)))
               strncpy(s+i,s+i,strlen(w1));
    }
    
    void main(){
    
    char ligne[200],w1[20];int i,n;
    printf("donner le nbre de ligne du text : ");
    scanf("%d",&n);
    printf("donner le mot à supprimer : ");
    gets(w1);
    
    for(i=0;i<n;i++){
        gets(ligne);
        supp_seq(ligne,w1);
        puts(ligne);
    }
    }

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 25
    Points
    25
    Par défaut
    Je pense que c'est une erreur. La fonction à utiliser à cet endroit est memcmp qui est la fonction de comparaison.
    memcmp() retourne 0 si le 1er paramètre et le 2ème paramètre sont identiques sur la longueur donnée par le 3ème paramètre.
    Donc !memcmp() retourne vrai dans ce cas.
    Et ensuite, je pense que le strncpy est faux. Il faut le remplacer par un strcpy(s+i, s + i + strlen(w1)) qui permettra de recopier ce qui suit le mot à supprimer.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup. oui je suis tout à fait d'accord (J'ai beau chercher, je ne vois aucun autre explication logique).

  4. #4
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Le reste est criblé d'erreurs. Cette ligne est telle qu'elle est car l'auteur ne comprend visiblement pas ce qu'il écrit.

Discussions similaires

  1. [AC-2010] ODBC : USER DSN VS SYSTEM DSN, j'aimerais comprendre.
    Par Geache dans le forum Access
    Réponses: 3
    Dernier message: 18/12/2013, 10h47
  2. J'aimerais comprendre pourquoi ça ne fonctionne pas
    Par JamesBond002 dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 28/05/2013, 16h49
  3. J'aimerai comprendre ce qu'est VPN
    Par andrianiaina dans le forum Hardware
    Réponses: 2
    Dernier message: 02/10/2010, 09h12
  4. J'aimerais comprendre ces messages
    Par BuzzLeclaire dans le forum Débuter
    Réponses: 4
    Dernier message: 16/10/2008, 14h46
  5. J'aimerais comprendre ....
    Par barbarello dans le forum C++
    Réponses: 14
    Dernier message: 24/01/2006, 20h39

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