Pb de C : faire un prefixe
ced
-
bibiloute -
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???
}
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
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!!!
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!!!
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
pour ce qui aurai des ^futurs problemes
merci et tchao!
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!