le code fonctionne il coupe le premier mot et le mettre, à la fin, le texte. Je ne comprends pas une ligne dans le code, disons que ma chaîne est "bonjour monde".c pointeurs et mémoire - compréhension
lorsque j'utilise le code "* p ++ = '\ 0';"
avant cette ligne: p: "world"
s: "hello world"
après cette ligne: p: "world"
s: "hello"
pourquoi at-il changé? et couper le mot monde?
le code complet:
void func(char *s)
{
char * p = strchr(s, ' ');
char * t = (char*)malloc(strlen(s) + 1);
if (!t)
{
printf("Memory allocated failed");
exit(1);
}
*p++ = '\0';
strcat(strcat(strcpy(t, p), " "), s);
strcpy(s, t);
free(t);
}
Vous devez vraiment être précis ici! Sinon, il n'y a aucun moyen de comprendre ce que vous voyez. Avant devrait être 'p:" monde "' (avec des espaces blancs!) – grek40
Votre code est incomplet; en particulier, il semble manquer une fonction 'main()' et au moins un '# include'. S'il vous plaît [modifier] votre code c'est un [mcve] de votre problème, alors nous pouvons essayer de le reproduire et de le résoudre. Vous devriez aussi lire [ask]. –
Veuillez lire et comprendre [la question sur pourquoi ne pas lancer la valeur de retour de 'malloc()' et de la famille dans C] (/ q/605845). –