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 !!
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 !!
Explique plus précisemment ce que tu veux faire.
Est-ce que tu veux faire quelque chose comme cela:
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager