Pb de C : faire un prefixe

slt tout le monde ! beau dimanche n'est il point vrai? en ce joli dimanche je me suis dit: tiens essayons de creer une fonction qui me permette de mettre une chaine avant l'autre! eh ben c amarche pas! lol j'explique un peu mieux j'ai deux char* s et t, un pointeur sur t qui pointe sur le debut de t(la premiere lettre pas les blancs devant) et je dois rajouter mon char* s devant le t et faire pointer sur la premiere lettre de mon nouveau t(s+t) voila ce qu j'ai fait j'ai essaye aussi de deplacer le pointeur avec des t++,s-- avant ma boucle ms rien n'y fait .
merci d'avance

char* prepend(const char *s, char *t){

while (*s!='\0') s++;s--;

while (s!='\0'){
*t=*s;
s--;
t--;
}
return t;

what's this fucking problems???
}

2 réponses

  1. Contributeur
    je suppose que s est le prefixe et q donc s a la taille strlen(t) + strlen(s);
    ce que t'as fait la, tu ecrases t, en fait t'as fait el contraire de ta premiere boucle en ecrasant t par s, et puis ton t--, il risque de toucher a quelque chose qu'il ne lui appartient pas, bon voila ce que je propose:

    strcat (s,t); //concatene s et t et mets le resultat ds s
    ou bien si tu v faire "pro" (recreer la roue):
    char * prefixe (char *s, char *t) {
    char *tmp = s; //en tout cas je suppose q s peut contenir t
    while (*tmp != '\0') tmp++; //la il s'arrete a *tmp =='\0'
    while (*t != '\0') {
    [tab]*tmp =*t;
    [tab]tmp++,t++;
    }
    *tmp = '\0';
    return s;
    }

    tafiscobar  "lou waye def bopame"
    la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
    0
    1. merci, mais c t ca que je voulais faire:
      prepend(char s,char t) renvoie
      ts et pas st
      donc j'ai corrige ce que tu m'as donne, merci tu m'as depatouiller
      #include <stdlib.h>
      #include <stdio.h>
      #include <string.h>
      
      char* prepend(char *s, char *t){
      char *tmp=t;
      while (*tmp!='\0') {
            tmp++;
            }
      while (*s!='\0') {
                      *tmp=*s;
                      tmp++;
                      s++;
                      }
      return t;
      }
      
      int main(int argc,char *argv[])
      {
       char *t1=(char*)malloc(1024);
       t1=prepend(argv[1],argv[2]);
       printf("%s\n",t1);
      
            system("PAUSE");
            return 0;
      }

      pour ce qui aurai des ^futurs problemes
      merci et tchao!
      0