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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose)


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

problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose)

jeudi 17 avril 2003 à 11:45:00 | problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose)

levraipig

bonjour à tous, voila moi j'ai un p'ti problème plutot embêtant.... je dois créer un class qui gère les chaines de caractères (ne me demander pas pourquoi je veux faire ca....je suis obligé pour mon cour de c++).

je vous montre d'abord les étape principales:

class TString
{
private:
int size; // taille réelle de la zone pointée
int blocsize; // taille des blocs de lachaine
int length; //longeur de la chaine
char * pstr;
public:
.
.
.
void Append(char *); // fonction qui ajoute
void Erase(int,int nbre_char=INT_MAX); //fonction qui éface

};



je vous ai passé les étapes des constructeur et autres broles car mon problème tourne autour de ces 2 fonctions.


voici les 2 fonctions proprement dites:

void TString::Append(char * chaine)
{
length=length+strlen(chaine);
if (length > size-1 )
{
char * temp;
size=((length+blocsize)/blocsize)*blocsize;
temp= new char [size];
strcpy(temp,pstr);
strcat(temp,chaine);
delete []pstr;
pstr=temp;
delete []temp;
}
else
{
strcat(pstr,chaine);
}
}
//--------------------------------------------------------------------

void TString::Erase(int position,int nbre_char)
{
if (nbre_char!=0)
{
if(position + nbre_char <= (size - 1))
{
length=length-nbre_char;
size=((length+blocsize)/blocsize)*blocsize;
char * temp= new char [size];
mon problème se situe juste ici



for (int i=0; i<position; i++)
{
temp[i]=pstr[i];
}
int k=position+nbre_char;
for(int j=position;j<size;j++)
{
temp[j]=pstr[k];
k++;
}
delete []pstr;
pstr=temp;
delete []temp;
}
else
{
length=position;
size=((length+blocsize)/blocsize)*blocsize;
char * temp= new char [size];
for (int i=0; i<position; i++)
{
temp[i]=pstr[i];
}
delete []pstr;
pstr=temp;
delete []temp;
}
}
}



voici enfin le main:

int main(int argc, char* argv[])
{
TString s06;
s06.Append("9ABCDEF");
s06.Erase(2,3);
s06.Erase(11,2);
s06.Erase(8);
s06.Erase(4,0);
s06.Erase(8,40);
return 0;
}

ne faite pas trops attention si il vous semble qu'il manque quelque chose car tout ou presque fonctionne mais voila...

exposé du problème:

dans la fonction APPEND (ajoute une chaine à une autre) lorsque je fais "char * temp" (je définis un pointeur sur caractères) la zone pointé contient n' importe quoi, jusque là on est ok tout se passe normalement.
et la fonction tourne normalement aussi.
MAIS
dans la fonction ERASE (suprime un certain nombre de caractères à partir d'une position donnée) lorsque je fais "char * temp" la zonne pointé NULL (indéterminée) et je comprend pas pourquoi???
car ca fais tout foirer ca car mon pointeur "pstr" ne pointe plus là ou il faut non plus.
j'ai bien analysé le problème et c'est la qu'il se trouve.

Si un gentille personne pouvais un peu me renseigner ca serait sympa car j'y comprend plus rien surtout que je n'ai ni erreur ni warning ni rien mais le programme plante quand il se lance..... avec des tas d'erreur de mémoire et tout le tralala

MERCI d'avance à toute personne qui se penchera au moin un p'ti peu sur mon problème.

Bertrand


Cette discussion est classée dans : int, temp, char, pstr, size


Répondre à ce message

Sujets en rapport avec ce message

problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose) [ par levraipig ] bonjour à tous, voila moi j'ai un p'ti problème plutot embêtant.... je dois créer un class qui gère les chaines de caractères (ne me demander pas pou [ c++ ] pb de convertion hexa [ par devoX ] Bonjour a tous,j'ai un petit soucis, je vous explique:je dispose d'un text dans un buffer buf et je desire le metre dans un autre buffer buf2 mais en erreur bizzare [ par lektrosonic ] Bonjour, je code un programe en C sous Visual Studio.La chose qui est tres surprenante c est que quand je lance mon programe a partir de windows, il p Objet : ajout et taille [ par scorpion077 ] Bonjour,j'essai de corriger un DS portant sur la POO. voici mon code:--------------------------------------------------------------------------------# Recréer la fonction strstr [ par qubs ] Salut, J'aimerais recoder la fonction strstr mais je n'arrive pas a aboutir et a comprendre le fonctionnement, j'aimerais bien un coup de main svp. = Creer objet avec classe heritée [ par jonas03 ] Bonjour à tous,Voici mon problème : j'ai une classe personne et 2 classe dérivées interne et externe mais je veut créer dans mon main une personne mai [C++] 2 char => 1 int [ par Apaachee ] Bonjour, Je possède une opération : 1+99 que je place dans un tableau de char : coutcin>>exp; //La variable exp contient l'opération liberation de memoire [ par bobaben ] bonjour, je suis debutant en c++. j'ai un petit souci de liberation de memoire. je voudrai savoir comment peut-on desallouer "new" qui est dans une Error LNK2019 [ par issam000000 ] bonjour ,je suis débutant en programmation , je  arrive pas a résoudre cette erreur , quand je compile tout ce passe bien , 0 erreur 0 avertissement , Problème Liaison RS232 [ par maximus4 ] Bonjour,j'utilise un code que j'ai trouvé sur le site pour lister les ports RS232.J'ai 4 ports com le résultat m'affiche 4 com1code :void SonarFrm::li


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

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