Char -> char*

gangsoleil Messages postés 1 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 2 janvier 2003 - 2 janv. 2003 à 15:42
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 3 janv. 2003 à 11:01
Salut,

Je souhaite transformer un char en char*, et impossible de trouver une fonction qui fasse ca en C !
A priori, aucune fonction de string.h ne peut le faire...

Une solution à me proposer ?
Merci d'avance

4 réponses

trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
2 janv. 2003 à 20:42
Chez moi String c'est du C++.
Tu veux qu'un char (un caractère donc) soit pointé par un char * ?
C'est bizarre comme idée mais bon:

char * = &char;
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
2 janv. 2003 à 23:03
oui , parfaitement !
et pour en faire une vraie chaîine de caractères (ZTS)

#include
int main()
{
char c='a';
char pc[] = {c,0};//ceci est la transformation
std::cout << pc << "\tL=" << strlen(pc) << std::endl;
return 0;
}
comme ça, elle peut répondre aux fonctions du type strcpy...
0
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
3 janv. 2003 à 05:28
salut,
c'est possible en C et voici un exemple: sprintf

#include <stdio.h>
#include <conio.h> /* getch() */

int main (void) {

char un_char = 'P';
char *une_chaine;
/* convertir un char en char * */
sprintf (une_chaine, "%c",un_char); /* <stdio.h> */ printf ("un char %c une chaine %s ",un_char ,une_chaine);
getch();
return 0;
}
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
3 janv. 2003 à 11:01
Alors la NON !
la mémoire n'est pas allouée pour une_chaine il cela produit un trap
Voici un code correct :

#include <stdio.h>
#include <conio.h> /* getch() */
#include <stdlib.h>

int main (void) {

char un_char = 'P';
//il faut absolument allouer la mémoire...
//soit sur la pile
char une_autre_chaine[] = {un_char, 0};
//soit sur le tas
char *une_chaine = (char*)malloc(2*sizeof(char*));//<stdlib.h>
/* convertir un char en char * */
sprintf (une_chaine, "%c",un_char); /* <stdio.h> */printf ("un char %c une chaine %s une_autre_chaine = %s",un_char ,une_chaine, une_autre_chaine);
free(une_chaine);//libération du tas
getch();
return 0;
}
0
Rejoignez-nous