在 c 中分配给指向字符串的索引取消引用指针时出现段错误

Segfault when assigning to indexed dereferenced pointer to string in c

print 语句按预期执行,如果我在 if 语句中打印 line[0],它也按预期打印。但是,gdb 告诉我 segfault 出现在 if 语句中。我是否误解了如何访问 string 中的字符?

编辑代码以删除不相关的错误

void setflags(char** linep)
{
  char* line = *linep;
  while(strlen(line))
  {
    printf("%s\n",line);
    if (line[0] == '.') 
      line[0] = '*';
    else if (line[0] == ' ') 
      (*linep) ++;
    else
      break;
    line = *linep;
  }   
}

忽略有问题的循环样式,在您展示如何使用此函数之前,您的段错误无法诊断。我怀疑你传递的是只读字符串,例如:

char *string = "this is read-only string literal";
setflags(&string); // error

如果您正在做这样的事情,您必须使用数组使其可修改:

char string[] = "this is a modifiable character array";
setflags(&string); // no error