begin process at 2012 05 29 07:11:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

initialisation string pas très propre


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

initialisation string pas très propre

mercredi 26 avril 2006 à 13:37:17 | initialisation string pas très propre

HeavenForsaker

Bonjour,

Je me suis aperçu qu'il y avait de la daube dans mes chaines de caractère à l'initialisation et même en utilisant un strcpy(String, ""). Voila un extrait de code :

char String[4 + 1];
char String2[8 + 1];
strncpy(String, "", 1);
strncpy(String, "Test", 4);
strncat(String2, String, 5);

La question est donc simple, y a t-il une fonction qui permet de vider une chaine correctement ?
mercredi 26 avril 2006 à 15:46:45 | Re : initialisation string pas très propre

AlexN

Bonjour,

La fonction strcpy ajoute toujours le 0;
La fonction strncpy n'ajoute pas automatiquement le 0, si la longueur spécifiée est  inférieure ou égale à la longueur de la source, d'où les résidus dans tes chaines.

char String[4 + 1];
char String2[8 + 1];
*String = *String2 = 0; // Intialiser les chaines.
strcpy(String, "Test");
strcpy(String2, String);
printf("String = %s\nString2 = %s\n", String, String2);
mercredi 26 avril 2006 à 16:45:29 | Re : initialisation string pas très propre

HeavenForsaker

Ok, merci man pour ces précisions. Mais j'obtiens le même résultat avec :

*String = *String2 = 0;
strncpy(String, "", 1);
strcpy(String, "");

Ces fontions ne font que placer le caractère '\0' au début de la chaine apparement, pour les vider complétement j'ai trouvé la méthode suivante :

strncpy(String, "", LongueurDeString);

exemple :
char String[4 + 1];
strncpy(String, "", 5);

Avec ça on obtiens un beau "\000\000\000\000"
Voila c'était pas plus compliqué que ça !


mercredi 26 avril 2006 à 19:03:16 | Re : initialisation string pas très propre

ymca2003

char s[64];
memset(s, 0, 64);
mercredi 26 avril 2006 à 19:13:32 | Re : initialisation string pas très propre

HeavenForsaker

Merci ymca2003, je la connaissais pas mais ça fonctionne !
Lequel vaut il mieux utiliser pour vider une chaine proprement et rapidement?

strncpy(String, "", 5);
            ou
memset(String, 0, 5);

Si il y en à d'autre je suis preneur.
mercredi 26 avril 2006 à 19:17:25 | Re : initialisation string pas très propre

ymca2003

Réponse acceptée !
memset

à l'init : char s[64] = ""; fait pareil.
mercredi 26 avril 2006 à 19:31:47 | Re : initialisation string pas très propre

HeavenForsaker

Ok, impeccable merci les gars.


Cette discussion est classée dans : string, char, initialisation, propre, string2


Répondre à ce message

Sujets en rapport avec ce message

AnsiString et Char [ par JCLK ] J'ai un leger probleme :je recupere une String et j'ai ensuite besoin de la transformer en char *Est-ce possible ?La String contient un path ("C:\...\ tableau de char -> string [ par alfred289 ] bonjour,j'utilise BOrland C++ builder 5 et j'essaie de transformer un tableau de caractères en sring et je trouve pas commentmerci de votre aide operator [] ds une classe string pr retourner un caractère [ par ngryman ] Salut à ts,voilà j'ai un petit souci ds une classe String que j'ai fait. J'ai inclu un opérateur [] qui comme un char* retourne le char à la position Convertir une string en char* [ par dickymoe ] Existe-t-il une fonction qui permet de convertir une string en char* ?ou alors une fonction qui compare deux string sans respecté la casse ???Merci(en Probleme converssion [ par zzzzzz ] <img src=/imgs2 Probleme malloc [ par zzzzzz ] <img src=/imgs2 Convertion d'une string en char [ par redpooka ] Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?Merci#include <iostre problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu Visual C++ Free() [ par PRZYBYLSKI ] #include #include #include "stdafx.h"Question au Pro?Qu'es qui est faux docteurArrivé à free ça bombe#include <io convertir un String* en char [ par mimyne ] Bonjour a tous malgrès toute les fonctions que g essayé je n'arrive pas a convertir un string* en char s'il y a qqun qui pourrait me renseigner je su


Nos sponsors


Sondage...

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,515 sec (3)

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