begin process at 2012 05 29 10:47:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

effacement definitif d'une chaine char*


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

effacement definitif d'une chaine char*

mardi 20 septembre 2005 à 10:10:50 | effacement definitif d'une chaine char*

ebooserge

salut a tous,
voila j'ai un petit avec quelques fondamentaux
je crée une chaine avec
char *chaine;
pour pouvoir l'utiliser dans une boucle et recuperer une chaine a chaque fois.

for(x,y,z)
{
   chaine = char [100];   //c'est la longueur -1 de la chaine la plus longue que je souhaite recuperer
   //ensuite je recupere ma chaine etc etc etc
   cout<<chaine<<endl;
   delete[] chaine;    //pour liberer la memoire
}

le pb c'est que a chaque fois que la boucle tombe sur une chaine un  plus courte que la precedente chaine, il me 'affiche bien mais il affiche egalement la fin de la chaine precedente.
ce qui fait que si la 1ere chaine a resuperer est par exemple "hello world" et la 2e est  "salut", au niveau du cout il m'affiche "salut world".
un peu comme s'il n'avait pas effacé la precedente chaine avec le delete[] et qu'il avait ecrit par dessus.
vous voyez une solution ?

mardi 20 septembre 2005 à 10:27:54 | Re : effacement definitif d'une chaine char*

buno

Administrateur CodeS-SourceS
A chaque fois que tu remplis ta chaine, n'oublie pas de la terminer par '\0' pour indiquer la fin...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 20 septembre 2005 à 11:02:35 | Re : effacement definitif d'une chaine char*

ebooserge

en fait pour tout te dire la chaine une requete contenu dans la fonction
recv(socket,chaine,sizeof(chaine),0);
donc je vois pas trop comment specifier la fin de chaine de caracteres dans le recv ou dans le cout.
mardi 20 septembre 2005 à 11:13:55 | Re : effacement definitif d'une chaine char*

buno

Administrateur CodeS-SourceS
Ok,
Alors tu peux déclarer ta chaine dynamiquement: chaine = new char[100];
Et si cela ne suffiit pas, tu peux l'initialiser avec le caractère de fin de chaine:
memset(chaine,'\0',100);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 20 septembre 2005 à 11:18:30 | Re : effacement definitif d'une chaine char*

julienchr

Réponse acceptée !
la valeur de retour de la fonction recv est le nb de bytes recu
tu doit donc pouvoir faire un truc du genre
int NbBytes=recv(..);
chaine[NbBytes]='\0';

je suis pas tres doue en c++ donc je te garantis pas la reponse
mardi 20 septembre 2005 à 13:31:56 | Re : effacement definitif d'une chaine char*

ebooserge

merci ca marche ...
jeudi 22 septembre 2005 à 14:28:43 | Re : effacement definitif d'une chaine char*

EMSIEN

je me demandais est ce que ça sera juste cette solution:
....
cout<<chaine<<endl;
strcpy(chaine,""); //remplir la chaine par le vide ???
// ou bien strcpy(chaine,NULL);

delete[] chaine;    //pour liberer la memoire
....
==================
[ Lien ] =
==================


Cette discussion est classée dans : affiche, chaine, char, effacement, precedente


Répondre à ce message

Sujets en rapport avec ce message

PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch, PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch, Chaine de Char et Memoire ! [ par Soft ] Bonjour,Qq1 connait il un moyen pour charger le contenu d'un fichier (pouvant atteindre plusieurs dizaines de MO) dans un char *buffer;Car meme avec u convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci manipulation desformules logiques : URGENT [ par The_Legacy ] Bonjour, je suis en train de développer un petit programme qui permet d'évaluer des expression logiques telles que ((a et b) ou (c et (non d))).A part Chaine de caracteres [ par youssef22 ] Bonjour,Je suis entrain d'ecrire un petit programme qui genere a chaque fois un mot, et affiche le mot sous forme de tirets, et demande a l'utilisateu PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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

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