begin process at 2012 05 29 20:36:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Problème avec un strcat


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec un strcat

mercredi 12 mars 2003 à 12:07:30 | Problème avec un strcat

kalf2000

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!!!


help me please!!!!!!
mercredi 12 mars 2003 à 12:33:42 | Re : Problème avec un strcat

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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!!!
>
>
> help me please!!!!!!
>
mercredi 12 mars 2003 à 13:17:39 | Re : Problème avec un strcat

superpa

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.

-------------------------------
Réponse au message :
-------------------------------

> 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...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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!!!
> >
> >
> > help me please!!!!!!
> >
>
mercredi 12 mars 2003 à 13:31:02 | Re : Problème avec un strcat

BruNews

Administrateur CodeS-SourceS
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...


-------------------------------
Réponse au message :
-------------------------------

> 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.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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!!!
> > >
> > >
> > > help me please!!!!!!
> > >
> >
>
mercredi 12 mars 2003 à 18:45:38 | Re : Problème avec un strcat

cmarsc

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.



-------------------------------
Réponse au message :
-------------------------------

> 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...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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.
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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!!!
> > > >
> > > >
> > > > help me please!!!!!!
> > > >
> > >
> >
>
jeudi 13 mars 2003 à 10:42:34 | Re : Problème avec un strcat

superpa

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

A bientôt,
P-A


-------------------------------
Réponse au message :
-------------------------------

> 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!!!
>
>
> help me please!!!!!!
>
jeudi 13 mars 2003 à 21:32:33 | Re : Problème avec un strcat

kalf2000


non c bon la solution de brunews marche nikel.

encore merci.
ciao,


-------------------------------
Réponse au message :
-------------------------------

> Si tu précisais quel type d'erreur tu rencontres:
> de compil, à l'exécution, résultat non attendu?
>
> A bientôt,
> P-A
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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!!!
> >
> >
> > help me please!!!!!!
> >
>


Cette discussion est classée dans : file, strcat, procedure, tmp, ext


Répondre à ce message

Sujets en rapport avec ce message

system() [ par LordBob ] Bonjour a tous,voilla j'essai de lancer un programme externe au miens, qui est un programme console et qui a me besoin d'argument supplementaire pour Code source incomplet en C [ par Sneakito ] Je suis un débutant, or j'ai un programme assez complexe à réaliser(pour moi), voici ce qu'il doit faire:Remplacer un mot dans une page html (hors bal fnsplit et fnmerge [ par samissam ] Bonjour, j'ai un code d'une fonction que je veux l'exploiter en Dev C++ mais ce dernier me renvoi des erreur sur les fnsplit et fnmerg, code: vo FILE et Structure en C++ [ par samissam ] Bonjour, j'ai fait un code en Dev C++ qui fait la lecture d'un FILE mais mon probleme est comment puisse-je faire son traitement afin d'extraire les Chercher un mot dans un fichier [ par nassim1987 ] Bonjour, je voudrais chercher un mot précis dans un fichier et copier le contenue de ce fichier tant qu'on a pas trouvé ce mot , le code que j'ai me d Lister un répertoire [ par norton ] Bonjour à tous, Voila ca fait un petit moment que je me prend la tête avec ce code [code=cpp] WIN32_FIND_DATA File; HANDLE hSearch; BOOL re; hSea Premier prog [ par ryder0007 ] Bonjour, Voila j'ai terminer de programmer mon premier programme et je voudrais savoir ce que vous en pensez. Il permet de compter le nombre de caract File Mapping [ par aymen87 ] Bonjour Je veux partager une ressource entre deux processus, j'ai eu recours au file mapping. Dans ma machine,ca fonctionne à merveille mais quand j passer du language Visual C à VB6 [ par JSilvere ] Bonjour, en ce mardi matin, je vous expose mon problème du jour ^^ Je doit créer l'équivalent d'un programme créer en Visual C en VB6. Je dispose d'u pointeur et strcat [ par ayarikhaoula ] salut tout le monde je veux développer une fonction en c qui stocke un chemin d'une dossier spécial dans une chaine de carratcère. je veuxsavoir comme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales