如何在c中的某个位置终止字符指针?

Mag*_*age 1 c string null pointers char

我试图通过设置空终结符来终止c在特定位置的字符指针.

例如,如果我有一个字符指针

 char *hi="hello";
Run Code Online (Sandbox Code Playgroud)

我希望它"hell"通过设置o为null.

我试过用strcpy这样做

strcpy(hi+4, "\0");
Run Code Online (Sandbox Code Playgroud)

但它没有用.

jua*_*nza 7

"hello"是一个字符串文字,所以它不能修改,并在您的代码中,hi指向这样的文字中的第一个元素.任何修改它指向的东西的尝试都是未定义的行为.

但是,如果您创建自己的char数组,则可以随意插入空终止符.例如,

char hi[] = "hello"; // hi is array with {'h', 'e', 'l', 'l', 'o', '\0'}
hi[4] = '\0';
Run Code Online (Sandbox Code Playgroud)

这里hichar您拥有的长度为6的数组,您可以修改其内容.设置第5个元素后,它包含{'h', 'e', 'l', 'l', '\0', '\0'},并打印它将产生hell.