|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Operateur new allocation new [ Archives / Au secours ] (yserver)
Informations & options pour cette discussion
mardi 27 décembre 2005 à 15:34:47 |
Operateur new allocation new

yserver
|
Bonjour, je cherche un peu d'aide pour cette modeste class. Telle quelle est présenté la elle génère une erreur lors de l'execution (ligne signalés dans la classe.
class CRepertoire { public: char * cNomRepertoire; //Avec char * cNomRepertoire aucun problème (je suprime la ligne new dans le constructeur) unsigned long ulNbReps; unsigned long ulNbFichiers; unsigned long ulTailleMo; CRepertoire(char * cRepertoire = "c:"); ~CRepertoire(void); void ScanRep(char *cRepertoire); }; CRepertoire::CRepertoire(char * cRepertoire) { char * cNomReperoire = new char[strlen(cRepertoire)]; //Ligne qui pose problème *cNomRepertoire = "" strcpy(cNomRepertoire, cRepertoire); ulNbReps = 0; ulNbFichiers = 0; ulTailleMo = 0; ScanRep(cNomRepertoire); } Pourquoi cette ecriture n'est pas correcte. Merci
|
|
|
mardi 27 décembre 2005 à 15:39:05 |
Re : Operateur new allocation new

yserver
|
désolé pour la mise en forme (problème de copier coller)
|
|
|
mardi 27 décembre 2005 à 15:48:49 |
Re : Operateur new allocation new

ekinox17
|
Donne nous l'appel de ton constructeur car on connait pas la valeur que
tu as donner à cRepertoire en general les erreur a l'execution ça vient
des pointeur NULL (non initialisé)
Verifie que le paramètre de ton constructeur est bien un char* .
C U Later ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 + 1 = 1, c'est l'harmonie parfaite (citation de J-C Van-Dame) Vive la logique: 1 ou 1 ça fait bien 1 : pas si fou que ça JC ;)
|
|
|
mardi 27 décembre 2005 à 15:57:07 |
Re : Operateur new allocation new

vecchio56
|
*cNomRepertoire = ""
Ca passe à la compilation ce truc?
|
|
|
mardi 27 décembre 2005 à 16:07:01 |
Re : Operateur new allocation new

yserver
|
non pardon cNomRepertoire ="" passe a la compilation mais pas a l'execution c'etait a des fin de test Je reformule donc : class CRepertoire { public: char * cNomRepertoire; //Avec char * cNomRepertoire aucun problème (je suprime la ligne new dans le constructeur) unsigned long ulNbReps; unsigned long ulNbFichiers; unsigned long ulTailleMo; CRepertoire(char * cRepertoire = "c:"); ~CRepertoire(void); void ScanRep(char *cRepertoire); }; CRepertoire::CRepertoire(char * cRepertoire) { char * cNomReperoire = new char[strlen(cRepertoire)]; //Ligne qui pose problème strcpy(cNomRepertoire, cRepertoire); ulNbReps = 0; ulNbFichiers = 0; ulTailleMo = 0; ScanRep(cNomRepertoire); }
Et je l'appel ainsi CRepertoire CRepSource (cFileName); J'ai controlè l'argument cFileName, il est correct puisque avec cette ecriture ca passe : char cNomReperoire[512];
|
|
|
mercredi 28 décembre 2005 à 00:11:45 |
Re : Operateur new allocation new

luhtor
|
Le strlen ne prend pas en compte le caractère nul, donc faut rajouter une case à ton tableau de caractère.
new chat[strlen(cRepertoire)+1];
Mais pourquoi se faire.... avec des char* alors que le C++ offre des string ^^
|
|
|
mercredi 28 décembre 2005 à 06:41:59 |
Re : Operateur new allocation new

yserver
|
J'avais essayé avec new chat[strlen(cRepertoire)+1]; Meme résultat. Je vais revoir tout ca. Merci
|
|
|
mercredi 28 décembre 2005 à 09:18:09 |
Re : Operateur new allocation new

nightlord666
|
L'erreur vient du fait que tu redeclare ta variable cNomRepertoire. Tu lui dit de créer une variable qui existe deja, donc sa pose probleme... met plutot sa :
this->cNomRepertoire = new char[strlen(cRepertoire) + 1];
Le probleme ne vient donc pas du tout du new...
|
|
|
mercredi 28 décembre 2005 à 09:19:23 |
Re : Operateur new allocation new

nightlord666
|
Sa m'etonne d'ailleur que personne n'y ait pensé... Tout le monde regardait l'allocation, mais pas le reste de la ligne...
|
|
|
mercredi 28 décembre 2005 à 11:44:01 |
Re : Operateur new allocation new

luhtor
|
NightLoad -> ya aucun problème de ce coté la. Ou vois tu une
variable deja déclarée ? De toute facon, "this" est facultatif. Perso,
il rend le code plus lisible, mais c'est une question de gout :)
Sinon voila la solution.
char * cNomRepertoire = new char[strlen(cRepertoire)+1]; //Ligne qui pose problème
memset(cNomRepertoire, 0, strlen(cRepertoire)+1);
strcpy(cNomRepertoire, cRepertoire);
Sinon que fait la fonction scanrep ?
|
|
|
Cette discussion est classé dans : ligne, char, unsigned, crepertoire, cnomrepertoire
Répondre à ce message
Sujets en rapport avec ce message
pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ]
portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia
Comment concertir Ansistring en unsigned char*????? [ par asik38 ]
Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!!
Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ]
J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char
conversion [ par coyotedef ]
salut!!lors de la compilation de mon code une erreur apparait. impossible de trouver un remede. "cannot convert parameter 1 from 'char [10]' to 'char'
char* to unsigned char* [ par rodrigos ]
comment peut-on convertir un char* en unsigned char*?à quoi correspond un unsigned char*?Merci pour votre aide!!
pb avec variable [ par jeffise57 ]
Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai
Parametre sur la ligne de commande [ par payen ]
Salut a tous,j'ai un petit souci en C++ ...alors voila : j'ai ecrit un code qui prend comme parametres sur la ligne de commande 2 entiers. Ensuite, pl
struct [ par ready4 ]
Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0
probléme d'écriture fichier [ par phoenixadb ]
phoenixadbJ'ai un problème sur une fonction que je n'arrive pas à résoudremon nom de fichier est test.txtet ma fonction:void ecriturefichier(char* nom
Newbie Erreur en C sous JBuilder c++ 6 [ par MrNo ]
salut je suis en trainde reprendre un programme existant en c sous cbuilder qui marchai t avant mais j'aides erreur a la compilationvoici mon code sur
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|