Concaténuation de chaine

romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014 - 28 mai 2008 à 11:57
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 28 mai 2008 à 16:28
 je voudrais mettre au bout d'une chaine de caractere (ligne) un caractere (caractere) donc j'utilise strcat mais il me donne les erreurs suivantes :

Mon programme :

char caractere;
char ligne[200];

caractere = fgetc(in);
           
                 printf("avant :%c\n",caractere);
                       strcat(ligne , caractere);
                       printf("apres :%c\n" ,ligne);

Voici les erreurs :

In function `int main(int, char**)':
invalid conversion from `char' to `const char*'
initializing argument 2 of `char* strcat(char*, const char*)'

                       

5 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
28 mai 2008 à 12:20
Salut
strcat et autre fonction str ne s'appliquent que sur les chaines de caracteres qui possede un 0 terminale.

Voici un exemple:

char caractere[2];
char ligne[200]="bonjour ";

caractere[0] = fgetc(in);
            
printf("avant :%c\n",caractere[0]);
strcat(ligne , caractere);
printf("apres :%s\n" ,ligne);      //%s car ligne est une chaine de caractere

A+
Mon site internet : http://pistol.petesampras.free.fr
0
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014
28 mai 2008 à 14:07
Voici mon deuxieme probleme sur cette ligne :




if((i>17) && (i<23) && (caractere==32)){}   

In function `int main(int, char**)':
error: ISO C++ forbids comparison between pointer and integer
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
28 mai 2008 à 14:19
Et comment tu as initialise ta variable caractere?

Si c'est
char caractere[2];
tu dois mettre if(caractere[0]==32)

A+
Mon site internet : http://pistol.petesampras.free.fr
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
28 mai 2008 à 15:59
Bonjour,

Il ne faut pas oublier le 0 binaire terminateur de chaîne de caractères dans le tableau "caractere" !

char caractere[2]; <-- les 2 octets contiennent n'importe quoi !
char ligne[200]="bonjour ";

caractere[0] = fgetc(in);
caractere[1] = 0; // terminateur de la chaîne

Jean-François
0

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

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
28 mai 2008 à 16:28
oui bien sur!!!

Merci jfrancois de m'avoir corrigé.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
Rejoignez-nous