OVH Cloud OVH Cloud

STRCAT STRCPY ....

5 réponses
Avatar
Assault Override
Bonjour,

Je développe actuellement en petit logiciel de cryptage/décryptage, cela fonctionne très simplement.
Le problème est que quand j'utilise la fonction strcat ou strcpy ca plante.
Alors non, je n'ai pas oublié de déclaré string.h et j'ai aussi pris mon temps pour aller dans string.h voir comment fonctionné la fonction que j'utilisé sur turbo c++ 3.0.
Ne connaissant pas d'autres méthodes de concaténation je me demandais si vous pouviez m'aider.

Merci d'avance pour votre aide.
Assault_Override



--------------= Posted using GrabIt =----------------
------= Binary Usenet downloading made easy =---------
-= Get GrabIt for free from http://www.shemes.com/ =-

5 réponses

Avatar
Loïc Joly
Bonjour,

Je développe actuellement en petit logiciel de cryptage/décryptage, cela fonctionne très simplement.
Le problème est que quand j'utilise la fonction strcat ou strcpy ca plante.
Alors non, je n'ai pas oublié de déclaré string.h et j'ai aussi pris mon temps pour aller dans string.h voir comment fonctionné la fonction que j'utilisé sur turbo c++ 3.0.
Ne connaissant pas d'autres méthodes de concaténation je me demandais si vous pouviez m'aider.


En C++, on utilise plus souvent std::string, et tout devient plus simple :

std::string s1 = "Bonjour ";
std::string s2 = "à tous";

std::string s = s1 + s2;

--
Loïc

Avatar
Richard Delorme

Bonjour,
Je développe actuellement en petit logiciel de cryptage/décryptage,
cela fonctionne très simplement.
Le problème est que quand j'utilise la fonction strcat ou strcpy ca
plante.
Alors non, je n'ai pas oublié de déclaré string.h et j'ai aussi pris
mon temps pour aller dans string.h voir comment fonctionné la fonction
que j'utilisé sur turbo c++ 3.0.
Ne connaissant pas d'autres méthodes de concaténation je me demandais
si vous pouviez m'aider.



En C++, on utilise plus souvent std::string, et tout devient plus simple :

std::string s1 = "Bonjour ";
std::string s2 = "à tous";

std::string s = s1 + s2;



L'OP risque de chercher longtemps... std::string n'existe pas dans turbo
c++ 3.0. Cela dit, il existe plein de compilateur plus récent qui
doivent supporter std::string, par exemple borland C++ 5.5, pour rester
dans la même marque :
http://community.borland.com/article/0,1410,20633,00.html

--
Richard


Avatar
Erwann ABALEA
Bonjour,

On Fri, 29 Jul 2005, Assault Override wrote:

Je développe actuellement en petit logiciel de cryptage/décryptage, cela fonctionne très simplement.
Le problème est que quand j'utilise la fonction strcat ou strcpy ca plante.


Etes-vous sûr que les données que vous manipulez (clair et chiffré) sont
bien des chaînes au sens C? En général, quand on fait de la crypto, ça
n'est pas le cas, justement, on manipule des suite d'octets.

Une chaîne en C est *forcément* terminée par un caractère NUL (0x00).

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
That's not a bug, that's a feature.

Avatar
Yalbrieux
Bonjour,

J'appuie ce que dit Erwann.
Vous ne pouvez utiliser que strncpy.
Donc prévoir la place et les memset.

Cordialement
Yves
Avatar
Richard Delorme
Bonjour,

J'appuie ce que dit Erwann.
Vous ne pouvez utiliser que strncpy.


Si c'est pour travailler sur des octets, les fonctions memcpy ou memmove
me semple plus appropriées, voire std::copy pour profiter du C++.

Donc prévoir la place et les memset.


Pourquoi faire des memset ? si c'est pour remplir la fin de la chaine
destinataire de '', strncpy le fait déjà trop bien.

--
Richard