bonjour a tous!!
je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
existe-il une fonction qui nous permet de faire ça ??
merci d'avance !!:D
Version imprimable
bonjour a tous!!
je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
existe-il une fonction qui nous permet de faire ça ??
merci d'avance !!:D
Explique plus précisemment ce que tu veux faire.
Est-ce que tu veux faire quelque chose comme cela:
?Code:
1
2
3
4 char c='a'; char *str=fonction_magique(c); /* ici str="a" */
Si oui, il y a deux façons.
La première est adaptée si tu ne veux pas allouer de mémoire:
Attention à ne pas prendre l'adresse de str n'importe comment !Code:
1
2
3
4
5
6
7 /* traitement */ char c=...; /* traitement */ char str[2]; str[0]=c; str[1]='\0';
La seconde façon alloue de la mémoire(et doit donc la libérer !):
Code:
1
2
3
4
5
6
7
8
9
10 char *char2string(char c) { char *str=malloc(2*sizeof(char)); if(str==NULL) return NULL; str[0]=c; str[1]='\0'; return str; }
La question n'a pas de sens : ou c'est un char ou c'est un char* (c'est à dire, probablement, un tableau de char). Les deux concepts sont radicalement différents.Citation:
je commence dans la programmation en c et g un petit probleme, je voudrai convertir un char en char*
Si on se contente de lire la question la réponse pourrait être
Pour pousser encore plus dans l'impertinence, nous pourrions dire soit une boite dans { char, long, int, ... } pour retourner un pointeur vers la boîte "il suffit" de créer un boite* pboite et de mettre l'adresse d'une boite dedans.Code:
1
2 char c='a'; char *pc = &c;
Vous pourrez remarquer qu'en C, un "pointeur vers" une boîte peut s'étendre à un pointeur vers un tableau de boîtes.
Lorsque la boîte est un char, nous pénétrons dans un domaine assez particulier définit par la convention : la fin d'un tableau de char est signalée par '0'.
Ceci dit, rien de tel n'est définit pour les autres "boîtes": comment est signalée la fin d'un tableau d'entiers?
Pour les débutants tout cela peut paraître "bizarre".
Mais comme nous avons la chance de pratiquer le français, un language riche en exceptions, que l'on mémorise à force de renvois aux racines latines, grecques, autres... nous sommes peut être plus tolérants face à ce type d'irrégularités.
- W
merci pour vos reponses , mais en fait, dans mon programme g declaré une chaine de caracteres et un tableau de chaines de caracteres, voici un petit bout du code:
et a la compilation il m'affiche l'erreur :Code:
1
2
3
4
5
6
7
8
9
10
11 #include<stdio.h> #include<string.h> char chaine[50]; char *tableau[50]; int i=0,j=0; void main(){ gets(chaine); //traitement tableau[i]=chaine[j]; //traitement }
Cannot convert 'char' to 'char *' in function main()
Bonjour,
Les variables globales c'est le mal.
gets() c'est le mal aussi... :p ( mieux vaut utiliser fgets(), mais on en reparlera après, au pire lire une documentation de la fonction ;) )
Je présume que ton erreur est à la ligne du :
Et c'est normal.Code:
1
2 tableau[i]=chaine[j];
Ton tableau est un pointeur sur une chaine de caractères ( de taille 50 )
Ta variable chaine est une chaine de caractères de taille 50.
Ainsi donc :
pour tableau[i] tu accède à un char*
pour chaine[i] tu accède à un char
La convertion entre les deux n'est pas trop possible ( à part les cas proposés par les autres membres )
Il doit y avoir une problème de conception, et au pire je pense que ce que tu veux faire, c'est grace à tableau stocké plusieurs chaine de caractères du style de chaine.
Pour ce faire il faudra allouer tableau ( avec un malloc )
par exempleCode:
1
2 tableau = malloc(10*sizeof(char));
et après faire une copie de la globalité de la chaine dans le tableau ( avec strcpy() )
par exemple.Code:
1
2 strcpy(tableau[0], chaine);
N'hésite pas à poser pleins de questions si tu ne comprends pas, ou alors à me reprendre si je me trompe totalement dans la tache que ton programme doit effectuer.
Cette question n'a aucun sens.
http://emmanuel-delahaye.developpez....ge=Page5#LXXVI