如何在c中的某个位置终止字符指针?
我试图通过将null终止符设置为c,在特定位置终止字符指针 例如,如果我有一个char指针如何在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。您可
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的指针。请不要以使现有答案看起来脱离上下文或完全错误的方式编辑问题。谢谢-如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确。如果字符串是文字,则不正确