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. ;)
Version imprimable
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:
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:
1
2
3
4
5 std::string EnleverExtension(std::string param_) { std::replace(param_.begin(),param_.end(),'-','?'); return param_; }
Bonjour, tout d'abord merci a vous deux :) cependant lors de l'ajout de
la compilation me retourne :Code:
1
2
3
4
5 std::string EnleverExtension(std::string param_) { std::replace(param_.begin(),param_.end(),'-','?'); return param_; }
ligne 1203 :Code:
1
2s_user.c: At top level: s_user.c:1203: erreur: erreur de syntaxe avant un élément lexical « : »
Code:std::string EnleverExtension(std::string param_)
oui,
string.h :Code:
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:
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>
Bonjour, effectivement je voudrais le faire en C alors :)
Pourriez vous m'expliquer comment proceder a cette redimension de chaine s'il vous plait ?Citation:
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.