A voir également:
- Char * to char
- Qwerty to azerty - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Bat to exe - Télécharger - Édition & Programmation
- Mb to mo ✓ - Forum Bureautique
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
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 ?
char* ... et un char ... [] c'est la même chose.
Qu'est ce que tu essai de faire qui te pose problème ?
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 569
7 févr. 2009 à 13:01
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
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 ?
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 ?
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 569
7 févr. 2009 à 13:34
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
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
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
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 ?
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 ?