Problème avec un strcat

Signaler
Messages postés
50
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
23 août 2005
-
Messages postés
50
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
23 août 2005
-
salut, g un blem, le code suivant me génère une erreur au dernier strcat. file est censé être egal a 87248364_48.bmp

comprend pas pourkoi

CString ext;
char tmp_CB[1], tmp_Procedure[1];
char file[50];

ext = ".bmp";

Procedure = 48;
int tempo = 87248364 ;
itoa(tempo,tmp_CB,10);
itoa(Procedure,tmp_Procedure,10);
strcpy(file,tmp_CB);
strcat(file,"_");
strcat(file,tmp_Procedure);
strcat(file,ext); // ERREUR!!! :sad)

help me please!!!!!! :approve)

6 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
itoa(tempo,tmp_CB,10);
1ere erreur.
tempo ne peut pas rentrer dans tmp_CB.
Donc erreur NON au strcat mais ici car ecrase valeurs suivantes dans le registre. Quand tu dois transformer 32 bits en ASCII toujours mimi 12 de taille buffer.
BruNews, ciao...
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

C'est une idée de mettre 12 bytes minimum mais il existe une bien meilleure:
elle fonctionne dans tous les cas:
déclarer un char *temp_CB = new char[sizeof(int) + 1]
on devrait TOUJOURS procéder de la sorte.
Par exemple pour la copie d'un chaîne de car:
char ch1[] = "azerty"
char *autech = new char[strlen(ch) + 1];
Profite que le C++ autorise la déclaration à n'importe quel endroit pour déclarer ton file + loin et avec une bonne taille. 50 sera-t-il absolument tjrs suffisant?
De plus, en procédant de la sorte, on évite, dans le cas d'un CGI ou d'un ISAPI, une des attaques favorites des hackers: le "buffer overrun"

Ceci dit, ton erreur n'était pas plutôt une erreur de compil?
si oui, essaie:
strcat(file,(LPCTSTR)ext);
qui caste un CString en chaîne de car à la C.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Le new provoque un tour de manege du memory manager.
calcule nombre cycles processeurs...
char buff[12];
sub esp, 12
1 seul cycle parallelisable, Y A PHOTO ?
BruNews, ciao...
Messages postés
455
Date d'inscription
mercredi 6 mars 2002
Statut
Membre
Dernière intervention
18 décembre 2003

c'est peut-être parce que file est un mot réservé en prendre (char fichier[50]) un autre pour voir si le problème est toujours présent.
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

Si tu précisais quel type d'erreur tu rencontres:
de compil, à l'exécution, résultat non attendu?

A bientôt,
P-A
Messages postés
50
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
23 août 2005

non c bon la solution de brunews marche nikel.

encore merci.
ciao, 8-)