Pb de C : faire un prefixe

Fermé
ced - 7 déc. 2003 à 11:20
 bibiloute - 10 déc. 2003 à 20:25
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

tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
7 déc. 2003 à 14:02
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
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