Help

Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009 - 29 avril 2003 à 22:58
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009 - 30 avril 2003 à 12:24
J'aimerais savoir comment faire pour remplacer une chaine de caractère par une autre (contenu dans une variable).
Ex : Bonjour <nom> , vous allez bien.
-> Bonjour laurent , vous allez bien.

Merci.

11 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2003 à 00:00
int RemplaceNom(char *pszsrc, char *pszname);
Un truc comme cela t'irait ?
Avec pszsrc serait ptr sur "Bonjour <nom> , vous..." et pszname doit contenir les caracteres de remplacement.
Retourne != 0 si jeton "<nom>" est trouvé et remplacé par ce qu'il y a dans pszname, va bon ???
Aucun controle sur taille buffer pszsrc qui devra etre assez grand.
Tu me postes un message dans la matinee de mercredi si tu veux ainsi.
BruNews, ciao...
0
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
30 avril 2003 à 08:06
Salut, à l'ère du C++ utilises les strings.

#include <string>
string chaine = "Salut <nom>";

void remplacer(string & a, string & b) {
a.clear();
a = b;
}

remplacer(chaine,"Salut Laurent");

En C je pense que tu peux faire ca avec
char* chaine = "Salut <Nom>";
strcpy("Salut Laurent", chaine);

Mais j'ai pas bien pigé ce que tu voulé faire, le mieux auré été une concaténation plutôt.
string chaine="Salut ";
chaine += "Laurent";

ou en C
char* chaine = "Salut ";
strcat(chaine, "Laurent ");

Voila, A+.
Bouba
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
30 avril 2003 à 09:34
Ouias c'est un truc comme ca dont j'aurais besoin.
La je galère un peu..
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2003 à 09:51
Petit prog complet.
Regarde + bas comment je me sers de ReplaceNOM().

#include <windows.h>
#include "resource.h"

char szbuff[120]; // 20 de plus

int ReplaceNOM(char *pszsrc, char *pszval)
{
if(pszsrc[0]) {
char *c;
if(c = strstr(pszsrc, "<nom>")) {
int len = strlen(pszval);
memmove(c + len, c + 5, strlen(c+5)+1);
memcpy(c, pszval, len);
return 1;
}
}
return 0;
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
SendDlgItemMessage(hdlg, IDED_SRC, EM_LIMITTEXT, 100, 0);
return 1;
case WM_COMMAND:
switch(wParam) {
case IDOK:
GetDlgItemText(hdlg, IDED_SRC, szbuff, 100);
SetDlgItemText(hdlg, IDED_RES, ReplaceNOM(szbuff, "Victor Hugo") ? szbuff: 0);
return 0;
case IDCANCEL: EndDialog(hdlg, 0);
}
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc);
return 0;
}

BruNews, ciao...
0

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

Posez votre question
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
30 avril 2003 à 10:13
Il manque les resource.h , je vais en faire un
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2003 à 10:28
Oui mais je n'ai pas voulu encombrer inutilement, c'est tellement simple.
2 zones EDIT sur une dialogbox.
La IDED_RES est readonly car sert seulement a lire resultat.
BruNews, ciao...
0
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
30 avril 2003 à 10:31
salut,

strstr ,strlen,memcpy,memmove sont dans #include <string.h>
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
30 avril 2003 à 11:51
wsprintf(mData,"%s",ReplaceNOM(cmd,lol)? cmd:0);

cmd: char*cmd;
lol est : char lol[250];
ca afiche toujours la 1°valeur de la variable lol (qui change presque tous le temps)
pk?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2003 à 11:59
wsprintf admet 0 comme param pour "%s" ???
Tu veux le prog fait ?
Passe moi ton mail par message sur le site.
BruNews, ciao...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 avril 2003 à 12:05
T'es certain que wsprintf admet 0 comme param pour "%s" ?
Tu veux le prog complet, passe moi ton mail par message sur le site.
BruNews, ciao...
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
30 avril 2003 à 12:24
C'est bon je t'ai envoyé un message.
0
Rejoignez-nous