Char* -> string

oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003 - 21 août 2003 à 19:48
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 21 août 2003 à 23:59
Voila tout est dans le sujet.

En fait j'ai un nom de fichier dans un buffer et j'aimerai ajouter des caractere au nom.

ex: *buffer = "voila.jpg"
apres transformation j'aimerai bien avoir
*buffer = "voila-copie.jpg"

La je doit etre fatigue parce que j'y arrive pas trop.

MERkI

6 réponses

guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
21 août 2003 à 20:54
strcat(buffer,"-copie.jpg\0");
0
oRTEEZ Messages postés 81 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 10 septembre 2003
21 août 2003 à 20:56
oui mais en faisant cela je recupere

voila.jpg-copie.jpg.
c'est pour cela que je voudrais le passer en String
a mon que je parcour mon buffer...
0
cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004
21 août 2003 à 21:07
eh bien C simple: il faut préparer un tampon adapté a la taille de ta chaine apres transformation, puis tu utilises les fonctions strcpy() et strcat()

char *source="c:\\winnt\";
char buffer[80];
strcpy(buffer,source);
strcat(buffer,"winmine.exe");

puts(buffer);
//imprime 'c:\winnt\winmine.exe' (en mode console)

bon dans ton cas comme c'est pas a la fin de la chaine il faudra que tu copies une premiere partie de la source, jusqu'au point, puis tu strcat ton "-copie" et enfin le reste de la chaine originale. Pour connaitre la position du premier point tu utilises strchr()

sinon dans ton cas, je te conseille une superbe page de MSDN appelée "String Manipulation Routines". Si t'as la librairie, je te conseille d'aller voir, ya meme des exemples.

j'espere t'avoir aidé, salut
0
guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
21 août 2003 à 21:46
Ouch, ton compilateur accepte ca ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
21 août 2003 à 21:50
disons que *buffer = "voila.jpg"

char *newbuf = new char[ strlen(buffer)+strlen("-copie")+1 ];

strncpy(newbuf,buffer,5);
strcat(newbuf,"-copie.jpg\0");

delete buffer;
cout<<"nom du fichier :"<<newbuf<<endl;
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
21 août 2003 à 23:59
Sur cette ligne:

strcat(newbuf,"-copie.jpg\0");


Pourquoi tu rajoutes un zéro final à une chaine qui en posséde déjà un ? strcat() s'arrête de toute façon au premier zéro final rencontré et si ce n'était pas le cas ton code ferait un buffer overflow.

Kaid - kaid.fr.st
0
Rejoignez-nous