Concanetation de chaines de caracteres en c

aqwxszedc -  
mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais faire un prgramme tres simple qui prend un certain nombre d'argument en entree et affiche la concanetation des arguments.
lors de la compilation on me dit :
con.c: In function ‘main’:
con.c:15: attention : incompatible implicit declaration of built-in function ‘strcat’

Cela fait 3 heures que je cherche et g tjr pas trouvé!

Voici le code du programme:

#include <stdio.h>
#include <stdlib.h>

#define MAX 1
int main (int argc, char * argv[])
{
int i;
char *string;
FILE *infile;
char tampon[MAX];
for (i=1;i<argc;i++)

{

string=strcat(string,argv[i]);

}
printf("%s \n",string);
return EXIT_SUCCESS;
}
Configuration: Linux Fedora
Firefox 1.5.0.12

7 réponses

  1. JR des cavernes Messages postés 166 Statut Membre 84
     
    Tu n'as pas besoin de mettre #include <string.h> pour utiliser strcat() ?
    0
  2. aqwxszedc
     
    G ajoute #include <string.h> . Le programme compile sans probleme mais lors de l'execution il affiche "incident de segmentation"
    0
    1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
       
      c'est normal tu n'as pas alloué de memoire a la variable string...
      rajoute ça
      string=(char *) malloc (100*sizeof(char));
      et puis pas besoin de faire
      string=strcat(string,argv[i]);
      strcat le fait tout seul il suffit de mettre
      strcat(string,argv[i]);
      0
  3. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    exact il faut inclure la lib string.h pour utiliser strcat() sans avoir le warning
    #include <string.h>
    0
  4. aqwxszedc
     
    Oui mais pk il me dit incident de segmentation???
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. aqwxszedc
     
    il y a kkn?
    0
    1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
       
      regarde le message 5...
      0
  7. aqwxszedc,
     
    je suis d'accord avec ta solution mais le probleme c'est qu'en principe tu sais pas à l'avance combien de memoire tu vas devoir allouer. Est ce que tu as une solution a ce probleme?
    0
  8. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    pour regler ce probleme tu peux calculer la taille de tous les arguments pour savoir de combien de memoire tu auras besoin...
    int taille=0;
    for(i=0;i<argc;i++)
    taille+=strlen(argv[i]);
    
    ensuite tu fais l'allocation avec la taille
    string= (char *) malloc((taille+1)*sizeof(char));
    0