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 :

Copier lettre par lettre


Sujet :

C++

  1. #1
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2017
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

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

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par d�faut Copier lettre par lettre
    Bonsoir tout l'monde ! J'imagine que mon probl�me est plut�t r�current, j'ai juste pas trouv� les mots pour la recherche !
    je vais faire court :
    J'ai deux char* A et B;
    B="mot1 mot2"
    j'aimerais ne copier dans A que le mot 2
    J'ai bien essay� strcpy(A[i],B[i]) dans un while -> marche pas...
    j'ai essay� avec sprintf des fois que j'aie confondu... que n�ni

    Question : une id�e ?
    Merci d'avance pour les r�ponses

  2. #2
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 281
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 281
    Par d�faut
    strcpy copie la source dans la destination et va �craser ce qu'il y avait dans destination.

    C'est plut�t strcat qu'il te faut utiliser. (string concatenation)

    Il faut prendre en compte qu'en C, une chaine est en fait un tableau de char. Ce tableau a une taille exemple 10 caract�res ci dessous :
    Utiliser *chaine signifie pointer sur le 1er �l�ment du tableau, mais je pense que tu n'en ai pas encore aux pointeurs.

    Tu ne peux pas ajouter une chaine � la fin de ce tableau comme �a, le tableau de char/la chaine doit �tre suffisamment grand(e).

    De plus, les fonctions strcpy/strcat travaillent au niveau de la chaine compl�te, pas d'un ou plusieurs de ses �l�ments.
    Tu peux par exemple copier un caract�re de A en �crasant un caract�re de B exemple
    Ici la 2�me case du tableau de char A va correspondre � la 1�re case du tableau B (dans un tableau en C le 1er �l�ment est l'�l�ment 0, le second 1, etc.).

    Pour info : ceci est du C, pas du C++

    en C++, on utiliserait d'autres syst�mes que les fonctions C strcat et cie.

    Il te faut : �tre s�r que ta chaine soit suffisamment grande pour contenir l'ajout que tu vas faire et si besoin agrandir celle-ci par exemple avec la fonction realloc, mais vu que tu d�butes tu peux d�finir une chaine suffisamment grande d�s le d�part.

    Ensuite il va te falloir une autre fonction pour trouver la position de mot 2 dans ta chaine.
    Ensuite fait un man sur la fonction strsep ou strpbrk, tu auras d'autre fonctions en lien te permettant :
    - de retourner un pointeur sur une sous-chaine dans une chaine
    - trouver la position d'une chaine dans une autre
    - etc

    � toi de trouver la fonction qu'il te faut et de l'utiliser correctement.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Comment tu extraies mot2 de la cha�ne ?
    Tu split sur l'espace ? Tu cherches mot2 ? Tu prends les 4 derneirs caract�res ?
    Ensuite on verra pour le copier.
    Tu travailles vraiment avec des char* ? Tu fais vraiment du C++ ? std::string non ?
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  4. #4
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2017
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

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

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par d�faut
    sur mon programme complet (oui �a c'�tait de l'exemple bidon) j'ai initialis� la plupart de mes char en [255] histoire d'�tre s�r;
    A la base j'avais fait des char* pour pouvoir me d�placer a l'int�rieur (je connais les pointeurs, je sors de BTS xD)

    Le A[i]=B[i] marchait pas hier... et maintnant si... j'adore quand les erreurs disparaissent sans raison.... Faut dire embarcadero j'ai l'impression que c'est pas hyper stable

    Mais alors du coup, strcat fonctionne en c++ si #include <string.h> ?

    "en C++, on utiliserait d'autres syst�mes que les fonctions C strcat et cie."
    Quels genre de fonctions ? Un site du genre Devdoc.io pour me documenter sur ces autres m�thodes ?

    Merci pour la r�ponse rapide, et pour les futures si jamais

  5. #5
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2017
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

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

    Informations forums :
    Inscription : Octobre 2017
    Messages : 6
    Par d�faut
    Citation Envoy� par Bousk Voir le message
    Comment tu extraies mot2 de la cha�ne ?
    Tu split sur l'espace ? Tu cherches mot2 ? Tu prends les 4 derneirs caract�res ?
    Ensuite on verra pour le copier.
    Tu travailles vraiment avec des char* ? Tu fais vraiment du C++ ? std::string non ?
    Alors pour extraire mot2 j'ai pens� � :

    while (B[i]=!" ")
    -> dans A[i]

    donc oui je split sur l'espace

    while (B[i]=!"\n")
    -> dans C[i]

    ui je trvaille sur du C++ et oui je pr�f�re les char array aux str

    en gros je veux couper en deux mon char pour qu'y reste d'un cot� le premier mot, de l'autre le RESTE de la phrase, �a peut �tre un, deux ou quinze mots

  6. #6
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Citation Envoy� par momomm Voir le message
    ui je trvaille sur du C++ et oui je pr�f�re les char array aux str
    C'est au mieux stupide...
    Tu fais du C. Y'a aucune honte � �a mais ne pr�tends pas faire du C++ dans ce cas.
    Utiliser un compilateur C++ pour �crire du C support� par celui-ci n'en fait pas un code C++.

    std::string
    std::string::find
    std::find
    std::string::constructor
    Ton probl�me se r�soud en... 3-4 lignes de C++ propres.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  7. #7
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2015
    Messages
    1 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 1 599
    Par d�faut
    En C++, pas super propre (l'analyseur visual studio indique "warning C26481: Don't use pointer arithmetic. Use span instead (bounds.1)."), on peut �crire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    a = b.c_str() + b.rfind(' ') + 1;
    Si on transcode en �criture "C", �a demande 3 lignes et on obtient les 7 commentaires suivant :
    warning C26485: Expression 'a': No array to pointer decay (bounds.3)
    warning C26485: Expression 'b': No array to pointer decay (bounds.3).
    warning C26481: Don't use pointer arithmetic. Use span instead (bounds.1).
    warning C26481: Don't use pointer arithmetic. Use span instead (bounds.1).
    warning C26481: Don't use pointer arithmetic. Use span instead (bounds.1).
    warning C26485: Expression 'a': No array to pointer decay (bounds.3).
    warning C26429: Symbol 'ptr' is never tested for nullness, it can be marked as not_null (f.23)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Copier caract�re par caract�re
    Par Abdelkaoui dans le forum D�buter
    R�ponses: 4
    Dernier message: 05/11/2007, 11h50
  2. Copier/coller par automatisation photoshop ?
    Par isa150183 dans le forum Imagerie
    R�ponses: 3
    Dernier message: 11/02/2007, 20h55
  3. R�ponses: 62
    Dernier message: 05/07/2006, 13h48
  4. R�ponses: 10
    Dernier message: 19/06/2006, 19h04
  5. Comment faire Copier/Coller par code VBA sur INTERNET...
    Par GESCOM2000 dans le forum Access
    R�ponses: 5
    Dernier message: 02/01/2006, 13h19

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