C => convertir un char[] en char*

Fermé
Friday_XIII - 7 févr. 2009 à 12:53
 loupius - 7 févr. 2009 à 17:18
Bonjour,
je dois réaliser un petit programme en C, et mon problème est comment transformer un char[] en char*,ou alors concaténer un char* et un char (strcat, ne fonctionnant pas) ....
pourriez vous m'aider s'il vous plait

merci d'avance
Friday
A voir également:

5 réponses

azureus33 Messages postés 49 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 7 février 2010 7
7 févr. 2009 à 12:57
Comment, c'est quoi le problème car un

char* ... et un char ... [] c'est la même chose.

Qu'est ce que tu essai de faire qui te pose problème ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 févr. 2009 à 13:01
Salut,
lami20j@debian:~/trash/ccm_c$ cat ccm49_char_pchar.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
        char s1[]="azerty";
        char *s2="uiop";
        char *s3;

        s3=(char*)malloc(strlen(s1)+strlen(s2)+1);
        strcat(s3,s1);
        printf("s1 = %s\ts2=%s\ts3=%s\n",s1,s2,s3);
        strcat(s3,s2);
        printf("s1 = %s\ts2=%s\ts3=%s\n",s1,s2,s3);
        return 0;
}
lami20j@debian:~/trash/ccm_c$ gcc ccm49_char_pchar.c
lami20j@debian:~/trash/ccm_c$ ./a.out
s1 = azerty     s2=uiop s3=azerty
s1 = azerty     s2=uiop s3=azertyuiop
0
c'est bien ce qu'il me semblait, mais j'étais pas sûr XD
en fait je travail sur la communication de deux processus par l'intermédiaire d'un pipe
le pere écrit
le fils lit (char par char)
et doit appeler une fonction avec ce qu'a lut le fils, mais ça merde un peu :s

et donc je peux concaténer un char* et un char[] avec strcat alors ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 févr. 2009 à 13:34
Re,

char s1[] = "aaaaa" et char *s2="bbbbb" désignent un tableau de caractères.

Le nom d'un tableau en C est assimilé à le notion de pointeur et représente l'adresse du 1er élément du tableau.

Le prototype de la fonction strcat est
       char *strcat(char *dest, const char *src);
Donc on peut utiliser les noms de tableaux en tant que pointeurs.

P.S.
En revanche il y a une différence entre les deux définitions
char s1[]="aaaa" - s1 est un tableau de taille ajustée pour contenir la suite de caractères "aaaa" et le caractère '\0' qui sont affectés lors de l'initialisation. Il occupera toujours le même espace mémoire

char *s2="bbbb"
- s2 est un pointeur initialiser de pointer sur une chaîne constante de caractères. Le pointeur pourra pointé sur n'importe quel autre tableau de caractères
0

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

Posez votre question
merci pour vos expilcations sur la différence entre un char* et un char[].
Mais maintenant un autre problème se pose ....
/*creation d'une relation pere fils à l'aide d'un fork()*/
//dans le pere
char[10] tab;
int i=0;
while(i<10){
tab[i]='a';
}
//j'ai donc un tableau remplit de lettre a
//je souhaite l'écrire dans un tube, j'ai fais ça :
write(tube[1],$tab,10);
//dans le fils
char* cle;
read(tube[0],&cle,10);

//mais ceci ne marche pas ....
//avez vous trouvé l'erreur ?
0
Je ne sais pas si j'ai trouvé l'erreur... mais j'en ai trouvé une!
Au lieu d'écrire:
int i=0;
while(i<10){ tab[i]='a'; }
j'aurai plutôt mis:
int i=0;
while(i<10){ tab[i++]='a'; }
0
J'en ai trouvé une autre!
char* cle;
read (tube[0], &cle, 10);
Je crains que tu aies un problème d'allocation mémoire!

Nota: Je tairai le problème du '$tab' qui doit,sans doute, être lu comme '&tab' ;-))
0