Char*, Char[]

ChoubiGogs Messages postés 7 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008 - 9 janv. 2008 à 15:36
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 janv. 2008 à 16:57
Bonjour à tous,

Est-il possible de convertir un char* en char[]?

Merci d'avance.

12 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 janv. 2008 à 15:43
A 1ere vue, je dirais que c'est la même chose, rien à convertir.

ciao...
BruNews, MVP VC++
0
ChoubiGogs Messages postés 7 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 15:57
J'aurais eu tendance à dire la même chose, mais je n'arrive pas à me défaire du message d'erreur:

1>e:\dbeauchene\bureau\c++ memoire\web_base_serveur\commun.h(36) : error C2440: 'initialisation' : impossible de convertir de 'char' en 'char []'

1> Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
9 janv. 2008 à 16:04
un char * est un pointeur mais il est possible de l'utiliser comme un tableau

    char * test;
    test = new char[32];

    cout << test[2];

// fonctionnera car enfait test[2] == *test(2)

donc pas besoin de convertir
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 janv. 2008 à 16:17
OHE, msg erreur dit 'char' SANS ****** au lieu de *CHAR

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
9 janv. 2008 à 16:22
a oui desoler j'ai pas penser ce que j'ai ecrit c'est plutot
test[2] == *(test+2)
0
ChoubiGogs Messages postés 7 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 16:26
En fait je crée un char* que j'utilise dans une fonction, c'est dans cette fonction a besoin d'un char* et rend un char*

J'ai réussi à le transformer en char (ce qui est très simple en fait), mais après j'ai besoin d'un char[] dan sune autre fonction en gardant les informations du char* précédent...
J'ai l'impression que la solution que vous me donnez change le char* en char avant le passage dans la première fonction, je me trompe?
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
9 janv. 2008 à 16:33
quand tu dis besoin d'un char[] il est en argument d'une fonction
ou dans la fonction elle meme car

un prototye d'une fonction comme celle la  char * Fonction(char Arg[],int iTaille);

si celle la tu n'as qua faire

char *sChaine;
sChaine = new char[32];
Fonction(sChaine,32);

peux tu montrer un bout de code pour mieux comprendre ton probleme
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 janv. 2008 à 16:34
*char en char, IMPOSSIBLE. Pointeur de 4 octets ne tiendra jamais sur 1 octet.

Fais voir ton code.

ciao...
BruNews, MVP VC++
0
ChoubiGogs Messages postés 7 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 16:42
char



* chaine=

""
;articles = fopen(nomDuFichier,


"r"
);


int
a = 100000;


//char* html_code = "";






if
(articles != NULL){


// On peut lire dans le fichier

fgets(chaine, a,articles);


}

chaine devrait donc representer la premiere ligne du programme...

Après dans une autre fonction, on a besoin de chaine[ ]
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
9 janv. 2008 à 16:47
char



* chaine=

""
; // fonctionne pas tu n'as rien alloué

char * chaine;
chaine = new char[256];



articles = fopen(nomDuFichier,"r"
);



if (articles)



{


       fgets(chaine, 255,articles);



}
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 janv. 2008 à 16:51
char *chaine = ""; ???

Tu comptes stocker 100000 caractères dans une zone mémoire inexistante ?

C++ (@++)<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 janv. 2008 à 16:57
ce genre d'initialisation est à proscrire.
char *chaine = 0;
là je comprendrais.

Sans alloc, un pointeur ne pointe nulle part.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous