void slice_first_char(char ** string)
{
*string = &(*string[1]);
}
int main(int argc, char * argv[])
{
char * input = "abc";
input = &(input[1]);
puts(input); // "bc" as expected.
slice_first_char(&input);
puts(input); // \372\277_\377
// What‘s going on?
}
如何重写slice_first_char函数使其按预期工作?以C开头的字符串切片
你为什么不解释你期望它做什么,然后也许我们可以解决如何做到这一点? –
@NVI你可以编写一个自定义的substr()函数来提取 – cc4re
我根本不知道C,但为了好玩即时猜测。删除“&”,使它变成'slice_first_char(input)'。即时通讯猜测你通过引用传递参考,而不是参考字符串? – Lee