代碼正在工作它削減第一個單詞,並把它,最後,文本。我不明白代碼中的一行,比方說我的字符串是「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的返回值的問題。 –