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

如何在c中的某个位置终止字符指针?,c,string,pointers,null,char,C,String,Pointers,Null,Char,我试图通过将null终止符设置为c,在特定位置终止字符指针 例如,如果我有一个char指针 char *hi="hello"; 我希望通过将o设置为null,让它成为地狱 我试过用strcpy这样做 strcpy(hi+4, "\0"); 但它不起作用。第1点: 在代码中 char *hi="hello"; hi是指向字符串文字的指针。它可能无法修改。您必须改用char数组,并用相同的字符串文本初始化它。然后,您可以根据需要修改该数组的内容 第2点: 复制单个字符不需要strcpy。您可

我试图通过将null终止符设置为c,在特定位置终止字符指针

例如,如果我有一个char指针

 char *hi="hello";
我希望通过将o设置为null,让它成为地狱

我试过用strcpy这样做

strcpy(hi+4, "\0");
但它不起作用。

第1点:

在代码中

char *hi="hello";
hi是指向字符串文字的指针。它可能无法修改。您必须改用char数组,并用相同的字符串文本初始化它。然后,您可以根据需要修改该数组的内容

第2点:

复制单个字符不需要strcpy。您可以使用赋值运算符=,简单地赋值

注意:不终止指针,而是使用空终止符终止achar数组,使其成为字符串。

第1点:

在代码中

char *hi="hello";
hi是指向字符串文字的指针。它可能无法修改。您必须改用char数组,并用相同的字符串文本初始化它。然后,您可以根据需要修改该数组的内容

第2点:

复制单个字符不需要strcpy。您可以使用赋值运算符=,简单地赋值

注意:您不终止指针,而是使用空终止符终止achar数组,使其成为字符串。

hello是字符串文字,因此无法修改,在代码中,hi指向该文字中的第一个元素。任何试图修改它指向的东西的行为都是未定义的行为

但是,如果创建自己的字符数组,可以随意插入空终止符。比如说,

char hi[] = "hello"; // hi is array with {'h', 'e', 'l', 'l', 'o', '\0'}
hi[4] = '\0';
在这里,hi是一个长度为6的字符数组,您拥有该数组,并且可以修改其内容。设置第5个元素后,它包含{'h','e','l','l','\0','\0'},打印它将产生地狱。

hello是字符串文字,因此无法修改,在代码中,hi指向该文字中的第一个元素。任何试图修改它指向的东西的行为都是未定义的行为

但是,如果创建自己的字符数组,可以随意插入空终止符。比如说,

char hi[] = "hello"; // hi is array with {'h', 'e', 'l', 'l', 'o', '\0'}
hi[4] = '\0';

在这里,hi是一个长度为6的字符数组,您拥有该数组,并且可以修改其内容。设置第5个元素后,它包含{'h','e','l','l','\0','\0'},打印它将产生地狱。

如果字符串是文本,则无法修改它。否则:

要在4个字符后终止C字符串,可以使用:

*(he+4) = 0;

或者,由于strcpy复制所有指定的字符,然后附加“\0”字符:

strcpy(he+4, "");

但这相当混乱。

如果字符串是文本,则无法修改它。否则:

要在4个字符后终止C字符串,可以使用:

*(he+4) = 0;

或者,由于strcpy复制所有指定的字符,然后附加“\0”字符:

strcpy(he+4, "");

但这是相当模糊的。

一些明确说明:您不能终止指针。指针将指向一个有时称为字符串的字符数组,您可以修改该数组。如果其中一个字符为0,则在C中会被解释为EndOfString。因此,您可以只将其中一个数组元素设置为0='\0`==0x0,但不能设置为null,这是一个值为0x00000000的指针。请不要以使现有答案看起来脱离上下文或完全错误的方式编辑问题。谢谢-一些澄清:你不能终止一个指针。指针将指向一个有时称为字符串的字符数组,您可以修改该数组。如果其中一个字符为0,则在C中会被解释为EndOfString。因此,您可以只将其中一个数组元素设置为0='\0`==0x0,但不能设置为null,这是一个值为0x00000000的指针。请不要以使现有答案看起来脱离上下文或完全错误的方式编辑问题。谢谢-如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确