本意是打算输出 'l' 前面的字符串,先用指针锁定第一个 ‘l' 的位置在修改其为 '\0' 强制结束,但是编译器不给过,没太理解他给的提示,大lao们帮帮忙,谢谢。
const 声明的字符串不能被修改
你去掉const即可
#include <stdio.h>
#include <string.h>
int main()
{
char s[]="hello";
char *p= strchr(s,'l');
*p = '\0';
printf("%s", s);
return 0;
}
char const * p和const char * p是一样的意思,都是申明一个常量指针。常量指针表明指针指向的内容是不可以被修改的。所以你这里 * p = '\0'会报错,因为你试图修改常量指针p的首地址存储内容
还有一种是char * const p,它与上面两个不一样,它是保护指针不被修改,但指针指向的内容是可以修改的。如果是这种定义,那么 * p = '\0'是可以的。
希望对你有所帮助