代码正在工作它削减第一个单词,并把它,最后,文本。我不明白代码中的一行,比方说我的字符串是“hello world”。c指针和内存 - 了解
当我使用代码“* p ++ ='\ 0';”此行之前
:p: "world"
s: "hello world"
此行之后:p: "world"
s: "hello"
为什么会改变?并削减世界的话?
的完整代码:
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);
}
你真的需要在这里准确!否则无法理解你所看到的。之前应该是'p:'world''(带领先的空格!) – grek40
您的代码不完整;特别是它似乎缺少'main()'函数和至少一个'#include'。请[编辑]你的代码,这是你的问题[mcve],然后我们可以尝试重现并解决它。你还应该阅读[问]。 –
请阅读并理解[为什么不在C](/ q/605845)中投射'malloc()'和family的返回值的问题。 –