De la documentation MSDN:
La fonction copie de strncpy les caractères de comptage initial de strSource à strDest et retourne strDest. Si count est inférieur ou égal à la longueur de strSource, aucun caractère nul n'est ajouté automatiquement à la chaîne copiée. Si count est supérieur à la longueur de strSource, la chaîne de destination est complétée avec des caractères nuls jusqu'au nombre de longueur. Le comportement de strncpy n'est pas défini si les chaînes source et de destination se chevauchent.
Notez que strncpy
ne vérifie pas l'espace de destination valide; c'est laissé au programmeur. Prototype:
char *strncpy( char *strDest, const char *strSource, size_t count );
exemple étendu:
void send250(char *inMsg, int msgLen)
{
char block[250];
while (msgLen > 0)
{
int len = (msgLen>250) ? 250 : msgLen;
strncpy(block, inMsg, 250);
// send block to other entity
msgLen -= len;
inMsg += len;
}
}
duh! Comment ça m'a manqué? Merci! – SinisterDex
Cela copie uniquement les premiers caractères 'count' du tableau. Comment allez-vous obtenir les 250 prochains? –
@Bill le Lézard: Chaque fois qu'il appelle send250() et obtient la valeur de retour, il pourrait appeler (hors de ma tête, je ne connais pas le nom) la méthode pour diviser le tableau à ce point. Le seul problème que je vois ici est que vous envoyez 250 caractères à chaque fois, par exemple même s'il n'y en a que 10 de valeur. – junkforce