Bonjour,
Je cherche a modifier un caractere dans une variable,
Je m'explique si la variable contient : l-ol-
Je voudrais remplacer tout les - par tiret, par exemple.
Pouvez vous m'aider s'il vous plait ? merci d'avance.
Bonjour,
Je cherche a modifier un caractere dans une variable,
Je m'explique si la variable contient : l-ol-
Je voudrais remplacer tout les - par tiret, par exemple.
Pouvez vous m'aider s'il vous plait ? merci d'avance.
Si tu cherche à modifier le nom d'une variable à l'éxécution, c'est impossible.
Si tu cherche à modifier le nom de la variable dans tout ton programme, ton EDI/editeur de texte doit te fournir un commande du genre "Find & Replace" ou des outils de refactorisation plus évolués.
Si tu cherche à modifier la valeur d'une variable de type std::string, va voir du coté de std::string::replace et std::string::find
Si tu cherche à modifier la valeur d'une variable de type char*, utilise plutot un std::string
Bonsoir, merci de ta reponse j'ai trouver enfin presque...,
voici ce que j'ai trouver mais le probleme c'est qu'il remplace bien les - mais par 5 et non %055 serait tu d'ou vient le probleme s'il te plait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int EnleverExtension(char *lol[]) { int i; for (i=0 ; lol[i]!=0 ; i++) { if ( lol[i]=='-' ) lol[i] = "%055"; } return lol; }
C'est dangereux ce que tu fais, tu veux remplacer une seule cellule de ton tableau de caractère par plusieurs caractères. Dans le meilleur des cas effectivement il remplace un seul caractère, dans le pire des cas comme il y a trop de caractères il va écrire n'importe ou en mémoire. Il te faut donc redimensionner ta chaîne de caractères car remplacer une lettre par plusieurs revient à agrandir ta chaine de caractère .
A ta place je passerai par un string, qui te permet de localiser un caractère spécifique, de le supprimer et d'insérer une chaine de caractère à la place.
Salut,
Le code que tu nous présente est du code C buggé.
En C++, il faut utiliser std::string et les algorithmes de la STL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::string EnleverExtension(std::string param_) { std::replace(param_.begin(),param_.end(),'-','?'); return param_; }
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour, tout d'abord merci a vous deux cependant lors de l'ajout de
la compilation me retourne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::string EnleverExtension(std::string param_) { std::replace(param_.begin(),param_.end(),'-','?'); return param_; }
ligne 1203 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2s_user.c: At top level: s_user.c:1203: erreur: erreur de syntaxe avant un élément lexical « : »
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::string EnleverExtension(std::string param_)
oui,
string.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <string.h> std::string EnleverExtension(std::string param_) { std::replace(param_.begin(),param_.end(),'-','?'); return param_; }
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /* AFCTools.h $ 19/05/97 FR MT $ */ #ifndef AFC_STRING_H #define AFC_STRING_H #include <malloc.h> #include <ctype.h> #include <stdio.h> #include <string.h> #ifndef MINGW #include <fnmatch.h> #endif #include <math.h> #include <stdarg.h> #include <stdlib.h> #include <errno.h> #ifdef MINGW #include <fcntl.h> #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define ALL (~0L) /* Defined for afc_string_hash() */ #define afc_tools_internal_mix(a,b,c) \ { \ a -= b; a -= c; a ^= (c>>13); \ b -= c; b -= a; b ^= (a<<8); \ c -= a; c -= b; c ^= (b>>13); \ a -= b; a -= c; a ^= (c>>12); \ b -= c; b -= a; b ^= (a<<16); \ c -= a; c -= b; c ^= (b>>5); \ a -= b; a -= c; a ^= (c>>3); \ b -= c; b -= a; b ^= (a<<10); \ c -= a; c -= b; c ^= (b>>15); \ } #define afc_string_delete(str) if ( str ) { _afc_string_delete ( str ); str = NULL; } /* Function Prototypes */ char * afc_string_new(unsigned long numchars); char * _afc_string_delete( char * location); char * afc_string_copy( char * deststr, const char * sourcestr, unsigned long len); unsigned long afc_string_max( const char * str); unsigned long afc_string_len( const char * str); char * afc_string_mid( char * dest, const char * src, unsigned long fromchar, unsigned long numchars); // #define afc_string_comp(s1,s2,chars) strncmp ( s1, s2, chars ) signed long afc_string_comp( const char * s1, const char * s2, long chars); char * afc_string_upper( char * str); char * afc_string_lower ( char * s ); char * afc_string_trim ( char * s ); char * afc_string_instr ( const char * str, const char * match, unsigned long startpos ); char * afc_string_left ( char * dest, const char * src, long len ); char * afc_string_right ( char * dest, const char * src, long len ); unsigned long afc_string_reset_len ( const char * str ); int afc_string_pattern_match ( const char * str, const char * pattern, short nocase ); int afc_string_radix ( char * dest, long n, int radix ); unsigned long int afc_string_hash ( const register unsigned char * k, register unsigned long int turbolence ); char * afc_string_dup ( const char * ); char * afc_string_make ( char * dest, const char * fmt, ... ); char * afc_string_fget ( char * dest, FILE * fh ); char * afc_string_add ( char * dest, const char * source, unsigned long len ); char * afc_string_clear ( char * dest ); char * afc_string_temp ( const char * path ); char * afc_string_resize_copy ( char * * dest, const char * str ); char * afc_string_resize_add ( char * * dest, const char * str ); char * afc_string_dirname ( const char * path ); char * afc_string_basename ( const char * path ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif
#include <string>, pas <string.h>
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour, effectivement je voudrais le faire en C alors
Pourriez vous m'expliquer comment proceder a cette redimension de chaine s'il vous plait ?andnicam : C'est dangereux ce que tu fais, tu veux remplacer une seule cellule de ton tableau de caractère par plusieurs caractères. Dans le meilleur des cas effectivement il remplace un seul caractère, dans le pire des cas comme il y a trop de caractères il va écrire n'importe ou en mémoire. Il te faut donc redimensionner ta chaîne de caractères car remplacer une lettre par plusieurs revient à agrandir ta chaine de caractère .
A ta place je passerai par un string, qui te permet de localiser un caractère spécifique, de le supprimer et d'insérer une chaine de caractère à la place.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager