Problème avec un strcat

kalf2000 Messages postés 50 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 23 août 2005 - 12 mars 2003 à 12:07
kalf2000 Messages postés 50 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 23 août 2005 - 13 mars 2003 à 21:32
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 mars 2003 à 12:33
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...
0
superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
12 mars 2003 à 13:17
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.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 mars 2003 à 13:31
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...
0
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
12 mars 2003 à 18:45
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.
0

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

Posez votre question
superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
13 mars 2003 à 10:42
Si tu précisais quel type d'erreur tu rencontres:
de compil, à l'exécution, résultat non attendu?

A bientôt,
P-A
0
kalf2000 Messages postés 50 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 23 août 2005
13 mars 2003 à 21:32
non c bon la solution de brunews marche nikel.

encore merci.
ciao, 8-)
0
Rejoignez-nous