Pb de C : faire un prefixe

ced -  
 bibiloute -
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. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    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
  2. bibiloute
     
    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